有人能解释一下gcc交叉编译器的命名约定吗?



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

  • ARM -none-linux-gnueabi (codesourery ARM compiler for linux)
  • ARM -none-eabi (codesourery ARM编译器用于裸机系统)
  • ARM -eabi (Android ARM编译器)

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

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

对于我的系统中的编译器来说,这似乎并不完全准确。GNU手册中的信息是旧的,还是编译器分发器只是不再遵循它?

命名是这样的:

arch-vendor-(os-)abi

例如:

x86_64-w64-mingw32 = x86_64架构(=AMD64), w64 (=mingw-w64作为"vendor"), mingw32 (=win32 API由GCC看到)

i686-pc-msys = 32位(pc=通用名)msys binary

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

还有你的例子:

arm-none-linux-gnueabi = ARM架构,无厂商,linux操作系统,gnueabi ABI。

arm-eabi就像你说的,用于Android原生应用。

一个警告:Debian使用不同的命名,只是为了困难,所以如果您在基于Debian的系统上,请小心,因为它们对eg有不同的名称。i686-pc-mingw32 .

事实是,有一个规则,它就是上面从rubenvb描述的规则。但在某些情况下,您会发现命名是不正确的,如:

gcc-pippotron-6.3.1-2017.05-x86_64_arm-linux-gnueabihf
gcc-pippotron-arm-none-eabi-4.8-2013.11_linux

相关内容

  • 没有找到相关文章

最新更新