开发的过程中,我们一般都不使用开发板自带的交叉编译器的,因为都是厂家有封装的,扩展性比较差,所以比较推荐使用免费版大厂的交叉编译器:第一是GNU(提供源码,自行编译制作),第二是 Codesourcery,第三是Linora。今天我要讲的主要是Linora的交叉编译器。


第一:认识i686和x86_64

      见下面解释便知道32位和64位是代表的你的电脑位数,而非开发板的

Linaro交叉编译器的认识_二进制文件

i686
  • i686 是指一种32位架构,属于Intel x86架构家族的一部分。
  • 32位系统:i686 处理器可以运行32位操作系统和应用程序。
  • 历史背景:i686 是 Intel 的 Pentium Pro 处理器的代号,后来也用来指代任何兼容 i686 指令集的 32 位处理器。


x86_64
  • x86_64 是指一种64位架构,也称为 AMD64 或 Intel 64。
  • 64位系统:x86_64 处理器可以运行64位操作系统和应用程序,也向后兼容运行32位操作系统和应用程序。
  • 历史背景:x86_64 架构最早由 AMD 公司开发,并在 AMD 的 Athlon 64 处理器上首次应用。之后 Intel 也采用了这种架构,并命名为 Intel 64。


第二、认识两种arm架构的标签

  图中命名规则:前半部分对象为主机+后半部分为开发板

  arm-linux-gnueabihf 代表交叉编译器生成的是 arm-linux-gnueabihf 架构的二进制文件。


  1. arm
  • 指 32 位 ARM 架构。适用于 ARMv7 和以下版本的 32 位处理器。

     aarch64:

          指的 64 位 ARM 架构(ARMv8)


  1. linux
  • 表示目标平台是 Linux 操作系统。生成的二进制文件是为 Linux 运行环境准备的。


  1. gnueabi
  • gnueabi 表示 GNU Embedded Application Binary Interface,适用于嵌入式系统。eabi 代表嵌入式应用二进制接口,这是 ARM 架构的标准 ABI,确保二进制兼容性。


  1. hf:(补充)
  • hf 代表硬浮点(hard float)。这表示生成的二进制文件使用硬件浮点运算单元(FPU),这比软件浮点运算(soft float)有更好的性能。


根据上面的认识认识,找自己需要的,绝大部分都只需要用到上面4个专有名词来认识。小众的词汇,在这里就不提了!!!Linaro命名规则

  • 架构名称(如 aarch64, arm, armeb, armv8l):指定处理器架构和字节序。
  • 目标平台(如 linux-gnu, elf, eabi):指定编译器生成的目标平台或格式。
  • EABI 和 GNUEABI:Embedded ABI 是专为嵌入式系统设计的应用二进制接口,GNU EABI 则是带有 GNU 扩展的版本。
  • HF(hard float):表示编译器支持硬浮点运算,这对性能有显著提升。

Linaro交叉编译器的认识_二进制文件_02

 假设我现在需要用上述的交叉编译器,替换我开发板自带的

       aarch64-poky-linux

搞清楚命名含义:

  • aarch64:表示 64 位 ARM 架构(ARMv8)。
  • poky:指的是 Yocto Project 中的一个参考发行版和构建系统,通常用于嵌入式 Linux 开发。
  • linux:表示目标平台是 Linux 操作系统。




    下载地址: Linaro Releases