Qt源码交叉编译配置ARM架构环境
Qt中国分父 2024-09-01 13:35:03 阅读 71
一、编译链的下载
关于编译链下载路径如下:
https://github.com/raspberrypi/tools
可以直接在虚拟机里Linux系统中使用命令sudo apt-get install gcc-aarch64-linux-gnu和sudo apt-get install g++-aarch64-linux-gnu来获取需要的交叉编译链。
注意英文解释,在老的树莓派架构使用的是sudo apt-get install gcc-arm-linux-gnueabihf,而新的架构至少树莓派4B使用的是sudo apt-get install gcc-aarch64-linux-gnu
安装完后,其安装的交叉编译链在/usr/bin文件夹下,在此文件夹下的编译链可以直接使用不需配置默认环境。如图所示:
二、下载Qt源码并进行交叉编译
关于下载源码本文章就不讲述了
对其进行解压进入到mkspecs文件夹,图片如下
如图外面可以看见这两个文件,我使用的是树莓派4B,所以需要配置的是linux-aarch64-gnu-g++文件(如果没有适合自己目标机架构的,可以自己mkdir生成一个文件,在后续执行脚本的时候指定就行了),然后我们进入linux-aarch64-gnu-g++文件夹,打开qmake.conf文件。
打开内容如下:我们进去发现其实Qt源码早已配置好此编译链,如果是使用其他arm架构则需要自己手动配置一下架构对应的编译链
切换回源文件目录,运行configure可执行文件如图:
运行如下命令:(需要注意的是,我这里没有配置触摸屏相关模块)
我在注意这里用的-xplatform linux-aarch64-gnu-g++保证用的是此文件的qmake进行编译,和-prefix /usr/local/arm/qt保证文件安装在此目录。
./configure -prefix /usr/local/arm/qt -opensource -confirm-license -release -make libs -xplatform linux-aarch64-gnu-g++ -pch -sql-sqlite -qt-libjpeg -qt-libpng -qt-zlib -no-opengl -no-sse2 -no-openssl -no-cups -no-glib -no-iconv -no-separate-debug-info -nomake examples -nomake tools -no-pkg-config
若需要支持触摸屏,记得加上 -tslib 项
./configure -prefix /usr/local/arm/qt -opensource -confirm-license -release -make libs -xplatform linux-aarch64-gnu-g++ -pch -sql-sqlite -qt-libjpeg -qt-libpng -tslib -qt-zlib -no-opengl -no-sse2 -no-openssl -no-cups -no-glib -no-iconv -no-separate-debug-info -nomake examples -nomake tools -no-pkg-config -I /usr/local/arm/tslib/include -L /usr/local/arm/tslib/lib
执行完脚本后执行命令,make有点久请耐心等待,make install安装编好的库到文件/usr/local/arm/qt
make
make install
最后把/usr/local/arm/qt里的库放入ARM架构的系统中,可使用NFS共享目录来实现文件传输,这里就不介绍NFS了。
三、编译运行软件的Release版本
首先在虚拟机打开QT Creator,选择工具>>选项>>Kits>>添加>>GCC配置编译器,关于Kits的概念可以去找资料学习,如图:
我这里配置了C的和C++的,两个都有用,如图:
C配置:aarch64-linux-gnu-gcc ,C++配置:aarch64-linux-gnu-g++
配置好后配置Kits,如图:
配置好后配置设备,如图:添加时添加目标机的IP和用户名和密码
最后我找一个Qt自带的项目进行编译,如图:选择此项目
进行编译运行:生成可执行文件如下,把其放入arm架构开发板
四、关于具体在ARM开发板配置Qt环境
在开发板运行命令:
sudo vim /etc/profile
配置如下:
配置好后使用source /etc/profile生效。
最后运行编译好的可执行文件,效果如图:
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。