开篇赘述
ARM 架构主要有两种不同的位数变体:ARM32 和 ARM64。
- ARM32:也称为 ARMv7 架构,通常用于较旧的嵌入式系统和移动设备。ARM32 架构有 32 位寻址空间和指令集,适用于需要较低功耗和资源占用的场景。
- ARM64:也称为 ARMv8 架构,是较新的 ARM 架构版本,提供了更高性能、更大内存寻址范围和更多的寄存器。ARM64 架构支持 64 位寻址空间和指令集,适用于需要更高性能和更大内存支持的系统,比如现代的智能手机、平板电脑和服务器等设备。
因此,当选择交叉编译工具链时,需要确保选用的工具链与目标设备的架构兼容,以确保生成的可执行文件能够在目标设备上正确运行。对于 ARM32 和 ARM64 架构,你会发现相应的工具链,比如 `gcc-arm-linux-gnueabi` 用于 ARM32 架构,而 `gcc-aarch64-linux-gnu` 则用于 ARM64 架构。
方法一
方法二
如果要使用aarch64-linux-gnu-gcc 交叉编译器编译程序,且没有ARM 交叉编译环境,则使用如下命令安装:
|
|
查看aarch64-linux-gnu-gcc版本号
|
|
不同的系统架构对应不同版本的gcc for arm编译工具
multiarch name | syscall ABI | instruction set | endianness | word size | description | spec documents |
aarch64-linux-gnu | linux | ARMv8 | little | 64 | aarch64 Linux Platform | AAPCS64 (ARM IHI 005A)1\\ |
ELF for the ARM 64-bit Architecture2 | ||||||
aarch64_be-linux-gnu | linux | ARMv8 | big | 64 | aarch64 Linux Platform | AAPCS64 (ARM IHI 005A)1\\ |
ELF for the ARM 64-bit Architecture2 | ||||||
aarch64-linux-gnu_ilp32 | linux | ARMv8 | little | 32 | aarch64 Linux Platform | |
aarch64_be-linux-gnu_ilp32 | linux | ARMv8 | big | 32 | aarch64 Linux Platform | |
arm-linux-gnu | linux | ARMv7 | little | 32 | Old ARM ABI | APCS (ARM DUI 0041 chapter 9)4 |
arm-linux-gnueabi | linux | ARMv7 | little | 32 | ARM EABI, soft-float | AAPCS (ARM IHI 0042D)5\\ |
ARM GNU/Linux ABI Supplement6 | ||||||
arm-linux-gnueabihf | linux | ARMv7 | little | 32 | ARM EABI, hard-float | AAPCS (ARM IHI 0042D)5 and\\ |
XXXXX (TBD) | ||||||
armeb-linux-gnueabi | linux | ARMv7 | big | 32 | ARM EABI, soft-float | AAPCS (ARM IHI 0042D)5\\ |
ARM GNU/Linux ABI Supplement6 | ||||||
armeb-linux-gnueabihf | linux | ARMv7 | big | 32 | ARM EABI, hard-float | AAPCS (ARM IHI 0042D)5 and\\ |
XXXXX (TBD) | ||||||
armv8l-linux-gnueabihf | linux | ARMv8 | little | 32 | ARMv8 EABI, hard-float | |
arm-eabi | Bare-Metal | ARMv7 | little | 32 | ARM EABI, soft-float | |
armeb-eabi | Bare-Metal | ARMv7 | big | 32 | ARM EABI, soft-float | |
aarch64-elf | Bare-Metal | ARMv8 | little | 64 | ARMv8 EABI, hard-float | |
aarch64_be-elf | Bare-Metal | ARMv8 | big | 64 | ARMv8 EABI, hard-float |