序言
写文章的目的是想通过记录自己的学习过程,便于之后使用到相关的知识点可以回顾和参考。
要想在ARM平台上运行Qt程序,得满足以下两个点:
1、ARM平台上搭建Qt运行环境
2、获得通过交叉编译后的Qt可执行文件
一、编译tslib库
从网上下载tslib源码压缩包,发送到Ubuntu中并解压,步入tslib源码目录,内容如下所示:
执行命令安装以下软件:
sudoapt-getupdate
sudoapt-getinstallautoconfautomakelibtool
执行autogen.sh生成Makefile:
./autogen.sh
配置使用的交叉编译器及tslib编译输出路径:
./configure--host=arm-linux-gnueabihfac_cv_func_malloc_0_nonnull=yes--cache-file=arm-linux.
cache-prefix=/home/xzj/tslib-1.21/arm-tslib
直接执行make编译及makeinstall安装:
make
makeinstall
安装完成后在当前目录下生成一个arm-tslib目录。也是我们前面指令的编译输出目录路径。可以查看生成目录下有以下内容:
二、移植tslib到文件系统
我把生成的arm-tslib放在了挂载的buildroot文件系统的跟目录,并更名为了tslib。(可置于其它目录了,例如usr/lib,可不更名字,依照自己喜好,但接出来的环境变量要填对)
配置tslib的环境变量
打开文件系统根目录下的/etc/profile文件linux怎么读,填入以下内容:
三、编译Qt源码(用于移植到ARM)
从网上下载Qt源码linux ftp,我下载的是5.12.9的版本。
放在ubuntu并解压得到qt-everywhere-src-5.12.9源码目录
更改qmake.conf,配置相关的编译器,默认使用arm-linux-gnueabi前缀。
gedit./qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
配置编译选项,输入./configure-help指令,查看可配置选项,因为配置选项太长,我另写了一个脚本来执行配置选项linux 开发arm,名为autoconfig.sh,配置主要指定编译输出路径和功能选择:
#!/bin/bash
./configure -prefix /home/xzj/tool/qt-everywhere-src-5.12.9/armqt-5.12.9
-opensource
-confirm-license
-release
-strip
-shared
-xplatform linux-arm-gnueabi-g++
-optimized-qmake
-c++std c++11
--rpath=no
-pch
-skip qt3d
-skip qtactiveqt
-skip qtandroidextras
-skip qtcanvas3d
-skip qtconnectivity
-skip qtdatavis3d
-skip qtdoc
-skip qtgamepad
-skip qtlocation
-skip qtmacextras
-skip qtnetworkauth
-skip qtpurchasing
-skip qtremoteobjects
-skip qtscript
-skip qtscxml
-skip qtsensors
-skip qtspeech
-skip qtsvg
-skip qttools
-skip qttranslations
-skip qtwayland
-skip qtwebengine
-skip qtwebview
-skip qtwinextras
-skip qtx11extras
-skip qtxmlpatterns
-make libs
-make examples
-nomake tools -nomake tests
-gui
-widgets
-dbus-runtime
--glib=no
--iconv=no
--pcre=qt
--zlib=qt
-no-openssl
--freetype=qt
--harfbuzz=qt
-no-opengl
-linuxfb
--xcb=no
-tslib
--libpng=qt
--libjpeg=qt
--sqlite=qt
-plugin-sql-sqlite
-I/home/xzj/tool/tslib-1.21/arm-tslib/include
-L/home/xzj/tool/tslib-1.21/arm-tslib/lib
-recheck-all
给执行权限,执行脚本进行配置
chmod+x./autoconfig.sh
sudoapt-getinstallg++//配置前请先安装g++
./autoconfig.sh
配置完成够开始进行编译和安装,因为编译用时比较久,最好使用多指令同时运行:
make-j12
makeinstall
执行安装指令后,会在当前目录生成一个armqt-5.12.9文件,配置时命名的输出文件:
四、移植Qt到文件系统
把刚刚生成的armqt-5.12.9放在挂载的buildroot文件系统的/opt目录中:
要想Qt程序显示英文,需把英文字库放在新建一个/usr/share/fonts/目录下。配置Qt5的环境变量,打开文件系统/etc/profile,添加如下内容:
以上就是搭建ARM平台(开发板)的Qt运行环境,接出来须要在ubuntu搭建Qt交叉编译环境。
五、搭建QtCreator交叉编译环境
从网上下载安装包安装QtCreator,qt-opensource-linux-x64-5.12.9.run
下载完成后,给权限并执行安装:
chmodu+xqt-opensource-linux-x64-5.12.9.run
sudo./qt-opensource-linux-x64-5.12.9.run
接出来都会弹出安装窗口,就跟在win安装应用一样了,省略。
安装完成后,配置QtCreatorKits。打开Qt,点击工具->选项
配置qmake,qmake在里面编译Qt源码后生成的armqt-5.12.9上面
配置C++编译器,这儿我使用原先安装的交叉编译器,我的在ubuntu的/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++
配置Kitslinux 开发arm,选择昨天的Qtversions和C++编译器。
Qt环境搭建好了,可以新建一个项目试试,在新建项目时的Kits选项记得把刚刚添加Kits也勾选上。
建立ARM平台上的Qt执行程序,就选上刚刚新添加的Kit,之后点击建立,都会生成一个build-test-ARM_Qt_5_12_9-Debug的文件,上面就储存着Qt可执行程序,把这个可执行程序发送到ARM平台(开发板),之后直接运行就可以了。
假如想在ubuntu上运行,就选择默认的kit,之后直接点击红色的三角形运行就可以了,同时会生成一个build-test-Desktop_Qt_5_12_9_GCC_64bit-Debug文件,上面的可执行文件就是在ubuntu中运行的。
六、获得Qt可执行文件的另一种方式
不仅前面说的在QtCreator中打造出可以在ARM平台上运行的Qt程序之外,还有另一种方式也可以得到可以在ARM平台上运行的Qt程序。
步入项目的文件夹,直接运行qmake,生成Makefile,再执行make开始编译。
cdtest
/home/xzj/tool/qt-everywhere-src-5.12.9/armqt-5.12.9/bin/qmake
make
文章评论