环境说明:Windows 7 64位html
此过程须要:python
(1)Qt库开源代码,我使用的是5.7.0版本;linux
(2)Perl语言环境5.12版本以上;c++
(3)Python语言环境 2.7 版本以上;windows
(4)Windows平台上的MinGW开发工具集(内含本地编译器gcc、g++ 4.9以上版本,支持c++11);工具
(5)Windows平台上的交叉编译器arm-linux-gnueabihf(gcc、g++4.9以上版本,支持c++11)。开发工具
到Qt官网官网https://www.qt.io/download-open-source/#section-2下载qt-everywhere-opensource-src-5.7.0.zip或者qt-everywhere-opensource-src-5.7.0.tar.gz。ui
到Perl官网https://www.perl.org/get.html下载ActivePerl 5.12以上版本,如ActivePerl-5.24.0.2400-MSWin32-x86-64int-300560.exe。安装完成后将安装目录里的bin目录路径添加到windows环境变量的PATH中。spa
到Python官网 https://www.python.org/downloads/下载Python2.7以上版本,如python-3.5.2.exe。安装完成后将安装目录里的bin目录路径添加到windows环境变量的PATH中。.net
MinGW工具集内含编译器工具gcc、g++等,须要此工具集来编译Qt的qmake等开发工具,由于qmake这些开发工具是在本地windows上运行的。要求4.9以上版本的gcc、g++,4.8以上就已经支持c++11。
32位系统能够到https://sourceforge.net/projects/mingw/下载mingw-get-setup.exe后进行在线安装;64位系统到https://sourceforge.net/projects/mingw-w64/下载mingw-w64-install.exe后进行在线安装。安装完成后将其bin目录添加到环境变量PATH中。
以前使用的Codesourcery公司的交叉编译器版本较低(arm-2014.05-29-arm-none-linux-gnueabi.exe,arm-none-linux-gnueabi,gcc 4.8.3),支持c++11不彻底,并且编译好的程序须要联带几个基础的依赖库一块儿打包,麻烦了点。
现使用linaro公司的交叉编译器,可到http://releases.linaro.org/14.07/components/toolchain/binaries/下载gcc-linaro-arm-linux-gnueabihf-4.9-2014.07-20140726_win32.exe,安装完成后,将其bin目录添加到环境变量PATH中。arm-linux-gnueabihf工具编译后的程序不须要联带依赖库一块儿打包。
解压Qt源码到本地。用文本方式打开Qt源码目录里qtbase\mkspecs\linux-arm-gnueabi-g++\ qmake.conf配置文件,修改交叉编译器程序名相关的配置。
修改前:
修改后:
编译发现一个连接错误,查找其缘由是有一个源文件没有被编译,挺奇怪的。解决办法是修改qtbase\src\corelib\kernel\kernel.pri文件,貌似qpoll.cpp编译条件没达到,改成强制编译。
修改前:
修改后:
打开cmd窗口,进入Qt源码目录,执行以下代码,而后输入y接受许可协议开始配置,等待配置完成。
configure.bat -release -opensource -prefix D:\Qt5.7.0_ARM_Linux -nomake tests -nomake examples -no-opengl -skip qtvirtualkeyboard -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。
Configure正常完成后,执行命令mingw32-make开始编译。
编译完成后,执行mingw32-make install命令开始安装,将会安装把以前-prefix指定的目录中。
注:qmake默认都是以-prefix指定的绝对目录去搜索头文件和库文件,因此qmake自己能够移动变动路径;但若是是整个Qt库目录路径都变动,则须要在qmake.exe程序所在目录增长一个qt.conf配置文件,文件内容为:
[Paths]
Prefix=..
即用配置文件qt.conf里的Prefix项去更改qmake搜索的库路径,上面是通常状况状况即整个库目录被移动后时的配置方式,即以父目录为库路径。
到Qt官网官网https://www.qt.io/download-open-source/#section-2下载独立的Qt Creator程序安装包qt-creator-opensource-windows-x86-4.1.0.exe来安装。Qt Creator安装程序自己不大,由于不含有qmake等工具,也不含有Qt库。
也能够下载windows平台的Qt整包qt-opensource-windows-x86-mingw530-5.7.0.exe来安装,里面包含有Qt Creator、windows-x86 Qt库、mingw5.3.0。因此若是使用这个安装包,以前能够不用单独安装MinGW。安装此包后能够开发本地的Qt程序,通过以下的配置后还能够开发ARM linux程序。
不论使用上述哪一个包安装,都须要按以下配置好上面编译好的Qt库才能编译ARM linux平台的Qt程序。
启动运行Qt Creator,菜单工具(Tools)->选项(options),打开设置对话框,切换到构建与运行(build and run)项。先添加交叉编译器,点击添加,找到交叉编译器路径,取个名称,以下图。
设置make路径:点击Add,找到minGW安装目录bin里的mingw32-make.exe,取个名后添加,以下图。
若是须要用到调试功能,设置调试器Debugger与上相似。
设置Qt版本,点击添加,找到Qt库安装目录bin里的qmake.exe,取个名后添加,以下图
最后整合整套工具,设置构建套件,以下图,点击添加,取个名称,选择以前设置好的交叉编译器和Qt版本,点击Apply。最终点击”设置为默认”将该套方案做为当前编译方案。
至此,能够开发ARM linux上的Qt程序了。