mx6ull编译器选择
mx6ull编译器选择
https://github.com/nxp-imx
nxp官方维护的仓库
属于arm架构,armv7a系类。支持硬件浮点运算。需要系统。
可选的编译器:
在Linaro官网下载交叉编译工具链:https://www.linaro.org/downloads/
arm官方的:https://developer.arm.com/downloads/-/gnu-a
编译器命名规则:
编译器的命名除了反映基本的架构、ABI、操作系统等信息外,还可以包含更多细节,比如是否支持系统调用、硬件特性、运行模式等。以下是更完整的命名规则和含义.
编译器命名的关键组成部分:
目标架构(Architecture):
- 表示该编译器生成的代码是为哪种 CPU 架构设计的。
- 示例:
arm表示 32 位 ARM 架构(ARMv7-A 属于这一类);aarch64表示 64 位 ARM 架构。
子架构或指令集特性(Optional Sub-Architecture / Features):
- 可能包含如
v7a、v5t、neon等,表示支持的指令集扩展。 - 示例:
armv7a-linux-gnueabihf表示支持 ARMv7-A 架构。
- 可能包含如
操作系统(Operating System):
- 表示目标系统,如
linux表示用于 Linux 系统。 - 示例:
arm-linux-gnueabi中的linux。
- 表示目标系统,如
ABI(Application Binary Interface):
- 表示使用的二进制接口标准,常见的有:
gnueabi:GNU EABI(Embedded Application Binary Interface),用于嵌入式 Linux。gnu:通用 GNU ABI(通常用于桌面或服务器系统)。
- 表示使用的二进制接口标准,常见的有:
是否支持硬件浮点(Hard Float / Soft Float):
hf表示支持硬件浮点运算(Hard Float),否则是软件浮点(Soft Float)。- 示例:
arm-linux-gnueabihf支持硬件浮点。
是否支持系统调用 / 内核交互:
- 如果编译器名称中包含
linux,则表示它支持与 Linux 内核交互,包括系统调用(syscalls)。
- 如果编译器名称中包含
工具链供应商或版本(可选):
- 如
Linaro提供的工具链会带有版本号等信息。 - 示例:
gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf
- 如
示例说明:
以 arm-linux-gnueabihf 为例,其含义如下:
arm:目标架构为 ARM(32 位)linux:目标操作系统为 Linuxgnueabi:使用 GNU EABI 二进制接口hf:支持硬件浮点运算- 适用于:运行 Linux 系统的 ARMv7-A 架构芯片(如 i.MX6ULL)
总结:
| 组成部分 | 含义 | 示例值 |
|---|---|---|
| 架构 | CPU 架构 | arm |
| 子架构 | 指令集扩展 | v7a |
| 操作系统 | 目标 OS | linux |
| ABI | 二进制接口 | gnueabi / gnueabihf |
| 浮点支持 | 是否支持硬件浮点 | hf |
| 系统调用 | 是否支持与内核交互 | linux |
因此,针对 i.MX6ULL(ARMv7-A,支持硬件浮点,运行 Linux 系统)应选择如 arm-linux-gnueabihf 这类编译器。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 naro!




