0
点赞
收藏
分享

微信扫一扫

qt4.8.6交叉编译详解

崭新的韭菜 2022-04-19 阅读 110

一、准备工作

0.1 为什么要用交叉编译器?

0.2 交叉编译工具

0.3分类和说明

从授权上,分为免费授权版和付费授权版。

0.4命名规则

  • 实例
    1、arm-none-eabi-gcc
    (ARM architecture,no vendor,not target an operating system,complies with the ARM EABI)
    用于编译 ARM 架构的裸机系统(包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application),一般适合 ARM7、Cortex-M 和 Cortex-R 内核的芯片使用,所以不支持那些跟操作系统关系密切的函数,比如fork(2),他使用的是 newlib 这个专用于嵌入式系统的C库。

    2、arm-none-linux-gnueabi-gcc
    (ARM architecture, no vendor, creates binaries that run on the Linux operating system, and uses the GNU EABI)

    主要用于基于ARM架构的Linux系统,可用于编译 ARM 架构的 u-boot、Linux内核、linux应用等。arm-none-linux-gnueabi基于GCC,使用Glibc库,经过 Codesourcery 公司优化过推出的编译器。arm-none-linux-gnueabi-xxx 交叉编译工具的浮点运算非常优秀。一般ARM9、ARM11、Cortex-A 内核,带有 Linux 操作系统的会用到。

    3、arm-eabi-gcc
    Android ARM 编译器。

    4、armcc
    ARM 公司推出的编译工具,功能和 arm-none-eabi 类似,可以编译裸机程序(u-boot、kernel),但是不能编译 Linux 应用程序。armcc一般和ARM开发工具一起,Keil MDK、ADS、RVDS和DS-5中的编译器都是armcc,所以 armcc 编译器都是收费的(爱国版除外,呵呵~~)。

    5、arm-none-uclinuxeabi-gcc 和 arm-none-symbianelf-gcc
    arm-none-uclinuxeabi 用于uCLinux,使用Glibc。

    arm-none-symbianelf 用于symbian,没用过,不知道C库是什么 。

0.5 Codesourcery

0.6 ABI 和 EABI

  • ABI:二进制应用程序接口(Application Binary Interface (ABI) for the ARM Architecture)。在计算机中,应用二进制接口描述了应用程序(或者其他类型)和操作系统之间或其他应用程序的低级接口。

  • EABI:嵌入式ABI。嵌入式应用二进制接口指定了文件格式、数据类型、寄存器使用、堆积组织优化和在一个嵌入式软件中的参数的标准约定。开发者使用自己的汇编语言也可以使用 EABI 作为与兼容的编译器生成的汇编语言的接口。

0.7 arm-linux-gnueabi-gcc 和 arm-linux-gnueabihf-gcc

0.8.arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别

  • http://www.veryarm.com/296.html
  • 参考网友的说法:eabi标准的要好些,可能arm-linux-gcc就是arm-none-linux-gnueabi的一个链接

1.1编译环境

  • linux系统 搭建交叉编译环境

2.交叉编译工具下载地址:

3.qt源码下载地址:

  • windows系统搭建交叉编译环境

1.2 编译过程

1.安装交叉编译工具

2.解压qt源码

3.交叉编译配置:

4.开始编译

5.操作指令过程

1.3 编译参数解释

1.4 遇到的问题

  1. 问题一:在这里插入图片描述
    在这里插入图片描述
    以上问题均是下载了.zip格式的包导致;
    或者是下载了.tar.gz格式的包,解压又压缩放在windows系统上,又从windows系统上拿到linux系统上就会出现。其中的原因可能windows,linux解析换行符不同,导致configure脚本解析除了问题。重新下载源码编译即可。

问题二:未能生成qtuitools 和qtdesiner库;
这些库在tools模块下,需要编译需要指定 -make tools;默认是不会编译的
问题三:

1.5 使用交叉编译好的qt

举报

相关推荐

0 条评论