27

我試圖理解gcc交叉編譯器背後的命名約定,但似乎存在相互矛盾的答案。我在我的系統中的以下三個交叉編譯器:任何人都可以解釋gcc交叉編譯器的命名約定嗎?

  • 臂-NONE-Linux的gnueabi(CodeSourcery的ARM編譯器Linux)
  • 臂-NONE-EABI(CodeSourcery的ARM編譯器爲裸機系統)
  • 臂-EABI(Android的ARM編譯器)

當通過GNU libtool的手動閱讀時,它指定交叉編譯命名約定:

CPU廠商-OS(OS =系統/內核 - 系統)

這似乎與我的系統中的編譯器不完全準確。 GNU手冊中的信息是舊的,還是讓編譯器經銷商停下來了?

回答

18

命名歸結爲這樣:

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

相關問題