zoukankan      html  css  js  c++  java
  • Windows平台交叉编译Arm Linux平台的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官网官网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。

    1.2、安装Perl

    到Perl官网https://www.perl.org/get.html下载ActivePerl 5.12以上版本,如ActivePerl-5.24.0.2400-MSWin32-x86-64int-300560.exe。安装完成后将安装目录里的bin目录路径添加到windows环境变量的PATH中。

    1.3、安装Python

    到Python官网 https://www.python.org/downloads/下载Python2.7以上版本,如python-3.5.2.exe。安装完成后将安装目录里的bin目录路径添加到windows环境变量的PATH中。

    1.4、MinGW开发工具集

    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中。

    1.5、安装交叉编译器

    之前使用的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工具编译后的程序不需要联带依赖库一起打包。

    2、交叉编译Qt库

    2.1、编译前的处理

    解压Qt源码到本地。用文本方式打开Qt源码目录里qtbasemkspecslinux-arm-gnueabi-g++ qmake.conf配置文件,修改交叉编译器程序名相关的配置。

    修改前:

    修改后:

    编译发现一个链接错误,查找其原因是有一个源文件没有被编译,挺奇怪的。解决办法是修改qtbasesrccorelibkernelkernel.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会到qtbasemkspecslinux-arm-gnueabi-g++里读取qmake.conf文件,找到交叉编译工具来编译Qt动态库。

    默认-shared:编译动态库

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

    2.3、编译之make

    Configure正常完成后,执行命令mingw32-make开始编译。

    2.4、编译之make install

    编译完成后,执行mingw32-make install命令开始安装,将会安装把之前-prefix指定的目录中。

    注:qmake默认都是以-prefix指定的绝对目录去搜索头文件和库文件,所以qmake本身可以移动变更路径;但如果是整个Qt库目录路径都变更,则需要在qmake.exe程序所在目录增加一个qt.conf配置文件,文件内容为:

    [Paths]
    Prefix=..

    即用配置文件qt.conf里的Prefix项去更改qmake搜索的库路径,上面是一般情况情况即整个库目录被移动后时的配置方式,即以父目录为库路径。

    3、安装与配置Qt Creator

    到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程序了。

  • 相关阅读:
    CodeForces 510C Fox And Names (拓扑排序)
    Codeforces 1153D Serval and Rooted Tree (简单树形DP)
    HDU 6437 Problem L.Videos (最大费用)【费用流】
    Luogu P3381 (模板题) 最小费用最大流
    Codeforces 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses (并查集+分组背包)
    Codeforces 1144F Graph Without Long Directed Paths (DFS染色+构造)
    HDU 2204 Eddy's 爱好 (容斥原理)
    Codeforces 939E Maximize! (三分 || 尺取)
    Codeforces 938D. Buy a Ticket (最短路+建图)
    CodeForces 959E Mahmoud and Ehab and the xor-MST (MST+找规律)
  • 原文地址:https://www.cnblogs.com/qinwanlin/p/6956833.html
Copyright © 2011-2022 走看看