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
Qt源码版本:5.14.2 qt-everywhere-src-5.14.2.zip
交叉编译器版本:gcc-linaro-7.5.0-2019.12-i686-mingw32_arm-linux-gnueabihf
开发板:正点原子imx6ull阿尔法,已经通过buildroot移植好Qt5.14.2和tslib库
准备工作
在网上搜索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上成功运行: