ARM-linux的Windows交叉编译环境搭建
交叉编译Arm Linux平台的QT5库
1、准备交叉编译环境
环境说明:Windows10 64位
此过程需要:
(1)Qt库开源代码,我使用的是5.13.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)。
注:Qt Creator 完全安装的情况 (4)可以省略
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。
本次使用:qt-everywhere-src-5.13.0.zip
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中
本次使用:ActivePerl-5.28.msi
1.3、安装Python
到Python官网 https://www.python.org/downloads/
下载Python2.7以上版本,如python-3.5.2.exe。安装完成后将安装目录里的bin目录路径添加到windows环境变量的PATH中。
本次使用:python-3.6.8-amd64.exe
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中。
注意:Qt Creator 完全安装的情况 此步骤省略,到QT安装目录虾将其bin目录添加到环境变量PATH中。
例如:D:\ProgramFile\Qt5.13.2\Tools\mingw730_64\bin
本次使用:因为先完全安装了Qt Creator 所以使用自带的
1.5、安装交叉编译器
可到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工具编译后的程序不需要联带依赖库一起打包。
本次使用:gcc-linaro-6.5.0-2018.12-i686-mingw32_arm-linux-gnueabihf
2、交叉编译Qt库
2.1、编译前的处理
解压Qt源码到本地。用文本方式打开Qt源码目录里qtbase\mkspecs\linux-arm-gnueabi-g++\ qmake.conf配置文件,修改交叉编译器程序名相关的配置。
修改前:
修改后:
编译发现一个链接错误,查找其原因是有一个源文件没有被编译,挺奇怪的。解决办法是修改qtbase\src\corelib\kernel\kernel.pri文件,貌似qpoll.cpp编译条件没达到,改为强制编译。
修改前:
修改后:追加以下内容
2.2、编译之configure
打开cmd窗口,进入Qt源码目录,执行如下代码,然后输入y接受许可协议开始配置,等待配置完成。
configure.bat -release -opensource -prefix D:\Qt5.13.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。
2.3、编译之make
Configure正常完成后,执行命令mingw32-make开始编译。
mingw32-make
2.4、编译之make install
编译完成后,执行mingw32-make install命令开始安装,将会安装把之前-prefix指定的目录中。
mingw32-make install
注:qmake默认都是以-prefix指定的绝对目录去搜索头文件和库文件,所以qmake本身可以移动变更路径;但如果是整个Qt库目录路径都变更,则需要在qmake.exe程序所在目录增加一个qt.conf配置文件,文件内容为:
点击查看代码
[Paths]
Prefix=..
即用配置文件qt.conf里的Prefix项去更改qmake搜索的库路径,上面是一般情况情况即整个库目录被移动后时的配置方式,即以父目录为库路径。
3、安装与配置Qt Creator
3.1安装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库。
3.2配置Qt Creator
启动运行Qt Creator,菜单工具(Tools)->选项(options)
,打开设置对话框,切换到【Kits】
如果是低版本可能是【构建与运行(build and run)】
项。先添加交叉编译器[添加-->GCC-->C++]
,点击添加,找到交叉编译器路径,取个名称,如下图。
注意:这里是在1.5安装后的目录下
设置make路径:点击Add
,找到minGW安装目录bin里的mingw32-make.exe
,取个名后添加,如下图。
注意:这里是Qt creator 安装目录下或1.4安装后的目录下
设置Qt版本,点击添加,找到Qt库安装目录bin里的qmake.exe,取个名后添加,如下图
注意:这里是2.3~2.4编译出来的目录
最后整合整套工具,设置构建套件,如下图,点击添加,取个名称,选择之前设置好的交叉编译器和Qt版本,点击Apply。最终点击”设置为默认”将该套方案作为当前编译方案。
注意:这里是3.2做成的编译器
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
如果交叉编译的时候出make无法启动的错!请确保选择了make路径
点击选中要编译的工程-->左侧点击【项目】出现以下界面,请确保绿框中内容 如下图:
========================================================================================================================
到此结束!!!
ARM-linux的Windows交叉编译环境搭建的更多相关文章
- Ubuntu系统下arm-linux-gcc交叉编译环境搭建过程
搭建所需环境Linux版本:Ubuntu 14.10 交叉编译器版本:arm-linux-gcc-4.4.3资源链接 何为交叉编译环境搭建交叉编译环境,即安装.配置交叉编译工具链.在Ubuntu环境下 ...
- YA157C交叉编译环境搭建
目录 1.开发板简介 3.主机搭建交叉编译环境 4.编译第一个ARM Linux程序--Hello World 5.在开发板上运行Hello World程序 6.ssh登录开发板 7.注意 8.she ...
- Exynos4412交叉编译环境搭建
Exynos4412交叉编译环境搭建 交叉编译:在PC机(x86平台)上开发程序,在ARM板上运行,提高开发.编译速度. 环境: Tiny4412SDK1506开发板 需要软件: arm-linux- ...
- Redis的简单介绍及在Windows下环境搭建
简单介绍 1,Redis是什么 最直接的还是看官方的定义吧. Redis is an open source (BSD licensed), in-memory data structure stor ...
- Unix/Linux环境C编程新手教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建
1. openSUSE是一款优秀的linux. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXRjYXN0Y3Bw/font/5a6L5L2T/font ...
- Unix/Linux环境C编程入门教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建
1. openSUSE是一款优秀的linux. 2.选择默认虚拟机 3.选择稍后安装操作系统 4.选择linux opensuse 5. 选择默认虚拟机名称 6.设置处理器为双核. 7.内存设置为2 ...
- 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)
深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...
- 学习Linux(一)环境搭建
零基础学习Linux(一)环境搭建 从本文开始我会为大家介绍一下linux环境下详细的集群环境安装.配置.部署到实例演示的整个过程.在此过程中会给大家详细介绍一下Linux的操作技巧和一些工具的使用. ...
- Windows GTK+ 环境搭建(详解)
来源:http://blog.sina.com.cn/s/blog_a6fb6cc901017ygy.html Windows GTK+ 环境搭建 最近要做界面的一些东西,但是对微软提供的类库MFC不 ...
- Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】
http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附 ...
随机推荐
- Finance财务软件(支持多账套专题)
在2.0.0.7版本中新增了账套管理的UI控制 在2.0.0.5版本中支持多账套 客户端登录的时候可以选择登录账套 在服务端Finance.exe进程所在目录新增进程FinanceConsole.ex ...
- mathcurve.com
https://mathcurve.com/surfaces.gb/surfaces.shtml
- phaclon 初学者遇到的问题!
1,框架安装 需要安装PHALCON扩展. 2,Nginx伪静态 配置 3,app.ini 常量配置等配置 4,主体目录结构 互相调用及 类的注册服务 依赖注入 自动加载项问题. 5,数据库相关操 ...
- Uncaught ReferenceError: Vue is not defined(之一)
报错信息 Uncaught ReferenceError- Vue is not defined 报错代码示例 <body> <div id="app"> ...
- mybatis获取参数值的方式
示例: 总结:
- LVS+keepalived实现负载均衡&高可用(原来以及部署方法)
一.ARP技术概念介绍 为什么讲ARP技术,因为平常工作中有接触.还有就是LVS的dr模式是用到arp的技术和数据. 1.什么是ARP协议 ARP协议全程地址解析协议(AddressResolutio ...
- 解决通配符的匹配很全面, 但无法找到元素 'aop:config' 的声明
这是因为在applicationContext.xml文件中没有添加对应的地址 http://www.springframework.org/schema/aop http://www.springf ...
- CCF 202009-2 风险人群筛查
#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...
- BASE64编码作业
BASE64编码作业 什么是BASE64编码 ase64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.可查看RFC2045-RF ...
- flutter json_serializable数据模型的建立和封装
为了方便数据使用,我们将服务器拿到的数据转换为map类型,但是在使用是大量的数据会让使用map时头大,比如每个map都key都需要手动输入,很是麻烦. 本文使用了json_serializable将m ...