Linux環境でファイル名に表示されるパターンは次のとおりです。
x86_64-pc-linux-gnu
x86_64-linux-gnu-gcc
i386-pc-linux-gnu
名前の最初の部分のように見えるか、ハードウェアx86_64
アーキテクチャi386
を表します。
ところで、フルネームがどのように作られたのだろうか?名前の他の部分はどのように形成されますか?
答え1
これは、「トリプル」とも呼ばれる「構成名」です。私が知っている最良の説明は次のとおりです。Ian Lance Taylor の GNU 構成およびビルドシステム文書。
構成名は最大4つの部分に分けられます(元は3つの部分なので、「トリプル」という名前が付けられます)。
- CPUまたはアーキテクチャ(
i386
、、、...)x86_64
arm
- 「メーカー」(
pc
あなたの場合) - カーネル(
linux
) - 通常、Cライブラリ(
gnu
、つまりGNU Cライブラリを含むGNUオペレーティングシステム)、しかしより具体的かもしれません(gnueabihf
ARMではつまりARM「組み込み」ABIとハード浮動小数点を使用するGNUオペレーティングシステム)
pc
2番目の例のように、これらの一部は省略できます。config.sub
認識する「トリプル」の標準形式を提供します。
$ /usr/share/misc/config.sub x86_64-linux
x86_64-pc-linux-gnu
$ /usr/share/misc/config.sub djgpp
i586-pc-msdosdjgpp
$ /usr/share/misc/config.sub mingw32
i686-pc-mingw32
$ /usr/share/misc/config.sub vaxv
vax-dec-sysv
カーネルやオペレーティングシステムを持たないターゲットにはいくつかのバリエーションがありますarm-none-eabi
。x86_64-pc-elf
x86_64-pc-none
これらの構成名はビルドターゲットを記述するために使用され、クロスコンパイル時に一般的です(ただし排他的ではありません)。これはconfigure
多くのオプションの引数として使用でき、ツールを構築するためのプレフィックスとして使用できます。したがって、x86_64-linux-gnu-gcc
GCCはx86_64-linux-gnu
。
その構造はやや不思議で、次のような結果につながる可能性があります。長い議論...