私はUbuntu 13.04を使用しており、apt-get install mingw-w64
を使用してmingw-w64をインストールしています。次のコマンドで、私のプログラムの64ビットバージョンをコンパイルしてリンクできます。
x86_64-w64-mingw32-g++ code.cpp -o app.exe
これにより、64ビットのapp.exeファイルが生成されます。
32ビットバージョンのapp.exeを生成するには、どのバイナリフラグまたはコマンドラインフラグを使用しますか?
これは、現在使用しているツールチェーンのバリアントによって異なります。 [〜#〜] dwarf [〜#〜]と[〜#〜] seh [〜#〜の両方]バリアント(GCC 4.8.0以降)は単一ターゲットのみです。ディストリビューションのディレクトリ構造を調べると、自分で確認できます。つまり、64ビットと32ビットのどちらかではなく、両方のアドレス指定を持つライブラリのみが含まれています。一方、プレーンな古い[〜#〜] sjlj [〜#〜]ディストリビューションは確かにデュアルターゲットであり、32をビルドするためにビットターゲット。-m32
フラグを指定するだけです。それが機能しない場合は、i686-w64-mingw32-g++
でビルドしてください。
ちなみに、対応する3つのダイナミックリンクライブラリ(DLL)は、各GCC例外モデルは
libgcc_s_dw2-1.dll
(DWARF);libgcc_s_seh-1.dll
(SEH);libgcc_s_sjlj-1.dll
(SJLJ)。したがって、現在のMinGW-w64ディストリビューションが正確に提供している例外モデルを見つけるには、次のいずれかを実行できます。
bin
内)を見つけるために、MinGW-w64インストールのディレクトリとファイル構造を検査します。または___gxx_personality_v*
(DWARF)、___gxx_personality_seh*
(SEH)、___gxx_personality_sj*
(SJLJ)などの参照の存在を探します。 ; 現在のGCC例外モデルの取得 を参照してください。