ファイル名にしばしばこのパターンがあるのはなぜですか? - x86_64-pc-linux-gnu

ファイル名にしばしばこのパターンがあるのはなぜですか? - x86_64-pc-linux-gnu

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_64arm
  • 「メーカー」(pcあなたの場合)
  • カーネル( linux)
  • 通常、Cライブラリ(gnuつまりGNU Cライブラリを含むGNUオペレーティングシステム)、しかしより具体的かもしれません(gnueabihfARMではつまりARM「組み込み」ABIとハード浮動小数点を使用するGNUオペレーティングシステム)

pc2番目の例のように、これらの一部は省略できます。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-eabix86_64-pc-elfx86_64-pc-none

これらの構成名はビルドターゲットを記述するために使用され、クロスコンパイル時に一般的です(ただし排他的ではありません)。これはconfigure多くのオプションの引数として使用でき、ツールを構築するためのプレフィックスとして使用できます。したがって、x86_64-linux-gnu-gccGCCはx86_64-linux-gnu

その構造はやや不思議で、次のような結果につながる可能性があります。長い議論...

関連情報