2017-12-01 11 views
0

私のシステム上の現在のmingwバイナリを見ると、私は一般にi686-w64-mingw32-*x86_64-w64-mingw32-*コマンドを持っています。なぜMinGWバイナリにはそのような複雑な名前がありますか? (例:i686-w64-mingw32 -...)

私は前者が32ビットのWindows実行ファイルをコンパイルし、後者が64ビットのWindows実行ファイルをコンパイルすると仮定します。

w64mingw32は、これらのバイナリの名前を意味しますか?

w32バイナリには意味がありますか。 i686-w32-mingw32-gcc?私はmingw32は、プロジェクトがmingw32と呼ばれていて、MinGWに名前が変更されたためです。

答えて

1

MinGWは、GCCbinutilsと他のGNUソフトウェアに基づいています。 GNUプロジェクトは、いわゆる "GNUトリプレット"を使ってアーキテクチャ情報を指定します。トリプレットは次の形式をとります。

machine-vendor-operatingsystem 

バイナリの作成時にトリプレットが指定されました。

MinGW-w64はベンダーフィールドにw64、オペレーティングシステムにはmingw32を使用しています。もちろん、mingw32はオペレーティングシステムではありませんが、GCCとbinutilsのビルドシステムとソースコードの1つとして扱われます。

これらの長いバイナリ名は、GCCとbinutilsが使用しているビルドシステムの成果物です。これらのバイナリはすべて同じディレクトリにインストールされるため、異なるアーキテクチャをターゲットとするバイナリ(この場合は32ビットと64ビット)が異なるファイル名を持つ必要があります。これを行う最も簡単な方法は、バイナリにそれらのアーキテクチャを記述するGNUトリプレットを接頭辞として付けることです。

+0

Windows用のLinuxでクロスコンパイルする方法について、今日私の理解を助けてくれたので、この回答を追加しました。 – jcarpenter2

+0

@ jcarpenter2クロスコンパイルについて言及して以来、それをまだ発見していない:http://mxe.cc –

関連する問題