mx6ull编译器选择

https://github.com/nxp-imx
nxp官方维护的仓库

属于arm架构,armv7a系类。支持硬件浮点运算。需要系统。
可选的编译器:
在Linaro官网下载交叉编译工具链:https://www.linaro.org/downloads/
arm官方的:https://developer.arm.com/downloads/-/gnu-a

编译器命名规则:

编译器的命名除了反映基本的架构、ABI、操作系统等信息外,还可以包含更多细节,比如是否支持系统调用、硬件特性、运行模式等。以下是更完整的命名规则和含义.

编译器命名的关键组成部分:

  1. 目标架构(Architecture)

    • 表示该编译器生成的代码是为哪种 CPU 架构设计的。
    • 示例:arm 表示 32 位 ARM 架构(ARMv7-A 属于这一类);aarch64 表示 64 位 ARM 架构。
  2. 子架构或指令集特性(Optional Sub-Architecture / Features)

    • 可能包含如 v7av5tneon 等,表示支持的指令集扩展。
    • 示例:armv7a-linux-gnueabihf 表示支持 ARMv7-A 架构。
  3. 操作系统(Operating System)

    • 表示目标系统,如 linux 表示用于 Linux 系统。
    • 示例:arm-linux-gnueabi 中的 linux
  4. ABI(Application Binary Interface)

    • 表示使用的二进制接口标准,常见的有:
      • gnueabi:GNU EABI(Embedded Application Binary Interface),用于嵌入式 Linux。
      • gnu:通用 GNU ABI(通常用于桌面或服务器系统)。
  5. 是否支持硬件浮点(Hard Float / Soft Float)

    • hf 表示支持硬件浮点运算(Hard Float),否则是软件浮点(Soft Float)。
    • 示例:arm-linux-gnueabihf 支持硬件浮点。
  6. 是否支持系统调用 / 内核交互

    • 如果编译器名称中包含 linux,则表示它支持与 Linux 内核交互,包括系统调用(syscalls)。
  7. 工具链供应商或版本(可选)

    • Linaro 提供的工具链会带有版本号等信息。
    • 示例:gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf

示例说明:

arm-linux-gnueabihf 为例,其含义如下:

  • arm:目标架构为 ARM(32 位)
  • linux:目标操作系统为 Linux
  • gnueabi:使用 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 这类编译器。