Windows用にクロスコンパイルしたいプロジェクトがあります。適切なMakefileがあり、すべてがg++
。走った
$ apt install mingw-w64
500 MBのパッケージをダウンロードしましたが、実際に実行する方法がわかりません。 mingw
実行可能ファイルがないので、実際にコンパイルするにはどうすればよいですか?
mingw-w64
の構成パッケージのUbuntuパッケージWebサーバー上のファイルリストを見ると:
gcc-mingw-w64-x86-64
g++-mingw-w64-x86-64
binutils-mingw-w64-x86-64
mingw-w64-x86-64-dev
gcc-mingw-w64-i686
g++-mingw-w64-i686
binutils-mingw-w64-i686
mingw-w64-i686-dev
mingw-w64
がtoolchainを提供していることがわかります。つまり、コンパイルに使用される一連の代替ツール(コンパイラー、リンカー、ヘッダーなど)別のシステムのコード。
64ビットシステム用のC++コードをコンパイルする場合、/usr/bin/x86_64-w64-mingw32-g++-win32
を使用する必要があります。 CXX
環境変数を使用して、ほとんどのMakefileにそのコンパイラーを使用してコードをコンパイルするように指示できます。
別のオプションは、Mingw Cross Environment( [〜#〜] mxe [〜#〜] )を調べることです。これは特にLinuxからWindows(そして最近Macでも)へのクロスコンパイルを対象としています。 。このパッケージには、多数のライブラリ用のbult-in xupportがあり、積極的に開発されています。ウェブサイトを見て、ニーズに合っているかどうかを確認してください。
ところで、リリースバージョンではなく開発版を使用することをお勧めします。これは、(ライブラリの)パッケージメンテナーがURLを変更するとMXEリリースバージョンが破損するため、リリースバージョンは一般に非常に古いためです。通常、開発バージョンはより最新です。
私はこれを使用してpostgresをクロスコンパイルしました:
$ Sudo apt-get install mingw-w64
$ ./configure --Host=i686-w64-mingw32 --without-zlib # 32 bit
# or --Host=x86_64-w64-mingw32 64 bit
ref ここ
他のプロジェクトでは、ffmpegのように異なる方法で処理します。
./configure --target-os=mingw32 --cross-prefix=i686-w64-mingw32-
またはいくつか
./configure CC=i686-w64-mingw32-gcc ...
gL!