Windows平台交叉编译ArmLinux平台的QT5.7库
1、准备交叉编译环境
环境说明:Windows 7 64位
此过程需要:
(1)Qt库开源代码,我使⽤的是5.7.0版本;
(2)Perl语⾔环境5.12版本以上;
(3)Python语⾔环境 2.7 版本以上;
(4)Windows平台上的MinGW开发⼯具集(内含本地编译器gcc、g++ 4.9以上版本,⽀持c++11);
(5)Windows平台上的交叉编译器arm-linux-gnueabihf(gcc、g++4.9以上版本,⽀持c++11)。
1.1、下载Qt库源代码
到Qt官⽹官⽹www.qt.io/download-open-source/#section-2下载qt-everywhere-opensource-src-5.7.0.zip或者qt-everywhere-opensource-src-5.7.。
1.2、安装Perl
到Perl官⽹/get.html下载ActivePerl 5.12以上版本,如ActivePerl-5.24.。安装完成后将安装⽬录⾥的bin⽬录路径添加到windows环境变量的PATH中。
1.3、安装Python
到Python官⽹ /downloads/下载Python2.7以上版本,如python-3.。安装完成后将安装⽬录⾥的bin⽬录路径添加到windows环境变量的PATH中。
1.4、MinGW开发⼯具集
MinGW⼯具集内含编译器⼯具gcc、g++等,需要此⼯具集来编译Qt的qmake等开发⼯具,因为qmake这些开发⼯具是在本地windows上运⾏的。要求4.9以上版本的gcc、g++,4.8以上就已经⽀持c++11。
32位系统可以到sourceforge/projects/mingw/下载后进⾏在线安装;64位系统到
sourceforge/projects/mingw-w64/下载后进⾏在线安装。安装完成后将其bin⽬录添加到环境变量PATH中。
1.5、安装交叉编译器
之前使⽤的Codesourcery公司的交叉编译器版本较低(,arm-none-linux-gnueabi,gcc
4.8.3),⽀持c++11不完全,⽽且编译好的程序需要联带⼏个基础的依赖库⼀起打包,⿇烦了点。
现使⽤linaro公司的交叉编译器,可到/14.07/components/toolchain/binaries/下载gcc-linaro-arm-linux-gnueabihf-4.9-2014.,安装完成后,将其bin⽬录添加到环境变量PATH中。arm-linux-gnueabihf⼯具编译后的程序不需要联带依赖库⼀起打包。
2、交叉编译Qt库
2.1、编译前的处理
解压Qt源码到本地。⽤⽂本⽅式打开Qt源码⽬录⾥qtbase\mkspecs\linux-arm-gnueabi-g++\ f配置⽂件,修改交叉编译器程序名相关的配置。
修改前:
修改后:
编译发现⼀个链接错误,查其原因是有⼀个源⽂件没有被编译,挺奇怪的。解决办法是修改qtbase\src\corelib\kernel\kernel.pri ⽂件,貌似qpoll.cpp 编译条件没达到,改为强制编译。
修改前:
修改后:
2.2、编译之configure
打开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++⾥读取f⽂件,到交叉编译⼯具来编译Qt动态库。
默认-shared:编译动态库
默认-platform:为win32-g++,即指定本地编译器配置⽬录,到qtbase\mkspecs\ win32-g++⽬录⾥读取f⽂件,到本地编译⼯具来编译qmake。
2.3、编译之make
Configure正常完成后,执⾏命令mingw32-make开始编译。
windows开发平台
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论