例如。arm-unknown-linux-gnueabi 现在,一旦操作系统(即 Linux)被修复,C 库将被修复(GLibc),因此调用约定和遵循的 ABI 将被修复。第 4 个字段,即 ABI 分别有什么要求?工具链能否使用与底层操作系统和 LIBC 使用的不同的 ABI。在那种情况下,由上述工具链编译的库将如何在操作系统上运行?
问问题
229 次
1 回答
4
这或多或少是历史原因,也就是关于神圣操作系统名称的圣战。您所说的“工具链名称”实际上称为Target Triplet,顾名思义,它有三个字段,不多也不少。在您的示例中,这些字段将是:
- 机器/CPU:
arm
- 小贩:
unknown
- 操作系统:
linux-gnueabi
再举一个我已经遇到过的参考示例:i686-elf-gcc
,它用于爱好者操作系统开发:
- 机器/CPU:
i686-elf
- 供应商:(
unknown
隐式) - 操作系统:(
none
隐式;编译器实际上是一个独立的 交叉编译器,用于操作系统内核的开发,因此它输出的代码不需要底层操作系统,因为输出代码是操作系统本身!)。
这只是一个混淆问题,源于字段可能(并且确实)使用-
字符,该字符也用于分隔字段。在您的情况下,操作系统被认为是linux-gnueabi
GNU 操作系统,其 Linux 内核使用嵌入式 ARM ABI。Linux 内核在历史上一直是世界上最便携的软件之一,因此预计它可以移植到其他 ARM ABI,尽管我只知道 EABI...
于 2015-10-04T06:53:12.767 回答