web-dev-qa-db-ja.com

LinuxでMinGWクロスコンパイラを起動するにはどうすればよいですか?

Windows用にクロスコンパイルしたいプロジェクトがあります。適切なMakefileがあり、すべてがg++。走った

$ apt install mingw-w64

500 MBのパッケージをダウンロードしましたが、実際に実行する方法がわかりません。 mingw実行可能ファイルがないので、実際にコンパイルするにはどうすればよいですか?

21
Martin Melka

mingw-w64の構成パッケージのUbuntuパッケージWebサーバー上のファイルリストを見ると:

mingw-w64toolchainを提供していることがわかります。つまり、コンパイルに使用される一連の代替ツール(コンパイラー、リンカー、ヘッダーなど)別のシステムのコード。

64ビットシステム用のC++コードをコンパイルする場合、/usr/bin/x86_64-w64-mingw32-g++-win32を使用する必要があります。 CXX環境変数を使用して、ほとんどのMakefileにそのコンパイラーを使用してコードをコンパイルするように指示できます。

14
gipi

別のオプションは、Mingw Cross Environment( [〜#〜] mxe [〜#〜] )を調べることです。これは特にLinuxからWindows(そして最近Macでも)へのクロスコンパイルを対象としています。 。このパッケージには、多数のライブラリ用のbult-in xupportがあり、積極的に開発されています。ウェブサイトを見て、ニーズに合っているかどうかを確認してください。

ところで、リリースバージョンではなく開発版を使用することをお勧めします。これは、(ライブラリの)パッケージメンテナーがURLを変更するとMXEリリースバージョンが破損するため、リリースバージョンは一般に非常に古いためです。通常、開発バージョンはより最新です。

5
Bart

私はこれを使用して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!

5
rogerdpack