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生效。

最后运行编译好的可执行文件,效果如图:



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。