web-dev-qa-db-ja.com

誰かがgccクロスコンパイラの命名規則を説明できますか?

Gccクロスコンパイラの背後にある命名規則を理解しようとしましたが、矛盾する答えがあるようです。私のシステムには、次の3つのクロスコンパイラがあります。

  • arm-none-linux-gnueabi(CodeSourcery ARM Linux用コンパイラ)
  • arm-none-eabi(CodeSourcery ARMベアメタルシステム用コンパイラ)
  • arm-eabi(Android ARMコンパイラ)

GNU libtoolマニュアルを読むとき、クロスコンパイラの命名規則を次のように指定します。

cpu-ベンダー-os(os =システム/カーネル-システム)

これは、私のシステムのコンパイラでは完全に正確ではないようです。 GNUマニュアルの情報は古いですか、それともコンパイラディストリビューターは単にそれに従うのをやめましたか?

40
Leo

命名はこれに帰着します:

Arch-vendor-(os-)abi

したがって、たとえば:

x86_64-w64-mingw32 = x86_64アーキテクチャ(= AMD64)、w64(=「ベンダー」としてのmingw-w64)、mingw32(= GCCから見たwin32API)

i686-pc-msys = 32ビット(pc =一般名)msysバイナリ

i686-unknown-linux-gnu = 32ビットGNU/linux

そしてあなたの例は具体的に:

arm-none-linux-gnueabi = ARMアーキテクチャ、ベンダーなし、Linux OS、およびgnueabiABI。

arm-eabiはあなたが言うように、Androidネイティブアプリに使用されます。

注意点:Debianは、難しいために異なる名前を使用します。たとえば、Debianベースのシステムを使用している場合は、名前が異なるので注意してください。 i686-pc-mingw32

31
rubenvb

実は、ルールがあり、それはrubenvbからの上記のものです。ただし、次のように、名前が正しくない場合があります。

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

上記のこのマミングは、ルールを尊重していない2つの例です。

2