任何人都可以解释gcc交叉编译器的命名约定吗?

Leo*_*Leo 37 compiler-construction gcc naming-conventions cross-compiling

我试图理解gcc交叉编译器背后的命名约定,但似乎有相互矛盾的答案.我的系统中有以下三个交叉编译器:

  • arm-none-linux-gnueabi(用于linux的CodeSourcery ARM编译器)
  • arm-none-eabi(用于裸机系统的CodeSourcery ARM编译器)
  • arm-eabi(Android ARM编译器)

在阅读GNU libtool手册时,它将交叉编译器命名约定指定为:

cpu-vendor-os(os = system/kernel-system)

对于我的系统中的编译器来说,这似乎并不完全准确.GNU手册中的信息是旧的,还是编译器分销商只是停止了它?

rub*_*nvb 28

命名归结为:

arch-vendor-(os-)abi

例如:

x86_64-w64-mingw32 = x86_64架构(= AMD64),w64(= mingw-w64为"供应商"),mingw32(= GCC看到的win32 API)

i686-pc-msys = 32位(pc =通用名称)msys二进制

i686-unknown-linux-gnu = 32位GNU/linux

你的例子特别是:

arm-none-linux-gnueabi = ARM体系结构,没有供应商,Linux操作系统和gnueabi ABI.

arm-eabi是一样你说,使用Android原生应用.

一个警告:Debian使用不同的命名,只是很难,所以如果你在基于Debian的系统上要小心,因为它们有不同的名称,例如.i686-pc-mingw32.

  • “arm-eabi”命名与 Android 无关。EABI - 嵌入式应用程序二进制接口。 (3认同)