文章

Windows10 Qt5.14.2 arm交叉编译环境搭建QtCreator imx6ull

想要在imx6ull中运行Qt程序,首先得有一个交叉编译环境,由于各种原因我拥有一台性能并不出众的Windows电脑并且只能在上面进行Qt程序的开发,一开始我尝试使用虚拟机的方式来运行QtCreator,由于电脑性能原因我放弃了,因而想直接在Windows系统下搭建Qt的交叉编译环境,在Windows10 系统下交叉编译 Qt5 库到 ARM Linux 平台是一项复杂但常见的任务,于是在我环境搭建成功后便有了这篇文章。以下为Windows10 Qt5.14.2 arm交叉编译环境搭建QtCreator imx6ull过程。

环境

  • 系统版本:Windows10

  • Perl版本:5.26.1

  • Python版本:3.12.1

准备工作

在网上搜索Perl下载自行安装,安装好后在cmd命令中运行perl -v查看版本号:

在网上搜索Python下载自行安装,安装好后在cmd命令中运行python -v ,如果出现版本号则安装成功:

下载Qt源码后解压,注意存放的的路径不要有中文:

下载QtCreator安装,一路下一步,注意安装过程中选中MinGW32套件

下载交叉编译器并解压,设置好环境变量,运行arm-linux-gnueabihf-gcc -v

buildroot移植Qt5.14.2和tslib库可以参考我之前的文章,以上为搭建环境的全部的准备工作。

编译安装Qt5 库

进入源码目录,删除源码中qtquick3d文件夹,实测不删除将会在install步骤报错,修改Qt源码目录里qtbase\mkspecs\linux-arm-gnueabi-g++\ qmake.conf配置文件:

打开QtCreator中安装的MinGW32终端,一定要打开这个运行,不然编译过程会报错:

打开终端后通过终端进入到前面Qt源码解压的目录中,运行以下命令,注意将-prefix 参数修改为你想要安装编译好的Qt库的路径:

configure.bat -release -opensource -prefix D:\Qt5.14.2_arm_linux_lib  -nomake tests -nomake examples -no-opengl -skip qtvirtualkeyboard -skip qtwebengine -skip qtwebengine -skip qt3d -skip qtquick3d -skip qttools -xplatform linux-arm-gnueabi-g++

注:

-release:编译release版本。

-opensource:表示开源许可;

-prefix:指定安装目录,根据自己喜好;安装后qmake程序默认就会根据这个目录路径去搜索头文件和库文件,

-nomake:表示不编译后面参数指定的模块;

-no-opengl:表示不编译OpenGL,这个我们用不着,也没有安装OpenGL环境,所以不编译,否则会出错;

–skip qtvirtualkeyboard:跳过qtvirtualkeyboard,没有相应库环境,不编译,否则编译和安装过程中可能会报错。

-xplatform linux-arm-gnueabi-g++:指定交叉编译器配置目录为linux-arm-gnueabi-g++,qmake会到qtbase\mkspecs\linux-arm-gnueabi-g++里读取qmake.conf文件,找到交叉编译工具来编译Qt动态库。

默认-shared:编译动态库

默认-platform:为win32-g++,即指定本地编译器配置目录,到qtbase\mkspecs\ win32-g++目录里读取qmake.conf文件,找到本地编译工具来编译qmake

在终端中执行以下命令进行编译,其中-j4是便是4线程编译,根据自己电脑的CPU参数修改,make的时间很长:

mingw32-make -j4

make好后执行make install命令,这里install的路径就是上面的-prefix 参数:

mingw32-make install

配置QtCreator

启动QtCreator软件,在菜单中选择工具->选项 ,设置Qt Version,这里手动添加上面编译安装好的目录下的qmake.exe:

设置编译器,如果这里没有自动检测出来就自己手动添加交叉编译器:

设置CMake,注意为你QtCreator安装的路径下的mingw32-make.exe:

设置构建套件:

交叉编译测试

在QtCreator中新建项目,全部默认设置,此时编译将会失败,失败内容为:

无法启动进程"make" -f C:/Users/Abyss/Documents/build-untitled-imx6ull-Debug/Makefile qmake_all
Error while building/deploying project untitled (kit: imx6ull)
The kit imx6ull has configuration issues which might be the root cause for this problem.
When executing step "qmake"

这里还需要为工程设置mingw32-make的路径,这个路径在上面QtCreator安装目录下:

设置好后重新构建就成功了,构建完成的执行文件在工程的同一目录下:

将执行文件拷贝到开发板中执行 ./untitled 就可以运行,下面我只添加了一个button的界面,证明Windows10 Qt5.14.2 arm交叉编译环境编译的代码在imx6ull上成功运行:

License:  CC BY 4.0