2013-04-13 28 views
16

私はWindows用にコンパイルしたいプロジェクトがあります。私は適切なメイクファイルを持っています、すべてg ++で動作します。私はapt-get install mingw32を実行し、100-ishのMBパッケージをダウンロードしましたが、実際にどのように実行するかはわかりません。実行可能ファイルはmingw32ではありません。また、インターネット上で助けを見つけることはできますか?実際にどのようにコンパイルするのですか?MinGWクロスコンパイル(Linux)

+0

端末から次のコマンドを実行すると、コンパイラの実行可能ファイル(この例ではg ++)が表示されます。 makefileを適切に編集することができます。 "locate mingw | grep g ++" – thedaver64

+0

'Makefile'はautotoolsを使って生成されていますか? – gipi

+0

@gipi私は正直に覚えていない、私は私のプロジェクトのためにcmakeを使用します。 – thedaver64

答えて

12

出力がdpkg -L mingw32の場合、パッケージにはツールチェーン、つまり別のシステムでコードをコンパイルするのに便利な代替ツール(コンパイラ、リンカなど)が含まれていることがわかります。

コードをコンパイルするには、/usr/bin/i586-mingw32msvc-g++を使用する必要があります。私が正しく覚えていれば、そのようなツールチェーンを使用するようにMakefileに指示する変数が存在します。

+0

ツールチェインの変数はありませんが、CおよびC++コンパイラの変数をそれぞれCCとCXXに設定できます。 –

4

もう1つの選択肢は、LinuxからWindowsへのクロスコンパイルを具体的にターゲットとするMing​​w Cross Environment(MXE)です。このパッケージは、多数のライブラリをサポートしており、積極的に開発されています。それがあなたのニーズに合っているかどうかを調べるためにウェブサイトを見てください。

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

+0

ウェブサイトのMacについて言及していませんか?これは非常にきれいで、私はこれを初めて知っているので、まずあなたのツールが "クロスコンパイラ"を作成していることを推測しています。そして、作成したツールチェーンを使ってコンパイルする必要があります。 – CMCDragonkai

+0

まあ、それは "私の"ではありませんが、それはほとんどそれが何をしています。 Macのサポートに関する現在の状態については不明です(私はしばらくのうちにmxeを使用していません)。これまで、彼らはサポートに取り組んでいたと言われていますが、実際に実装されているかどうかはわかりません。 – Bart

4

私は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 here

他のプロジェクトには、ffmpegのように、別々にそれを行う:

./configure --target-os=mingw32 --cross-prefix=i686-w64-mingw32- 

または一部

./configure CC=i686-w64-mingw32-gcc ... 

などGL!

関連する問題