Windowsクロスコンパイル環境を正しく設定するには?

Windowsクロスコンパイル環境を正しく設定するには?

私は少なくともLinuxとWindows上で動作するCで書かれたアプリケーションを開発しています。私は主にLinuxで作業しているので、Windows用のアプリケーションをクロスコンパイルできることを願っています。

私の現在の設定:

  • Debian GNU/Linux amd64
  • 複雑なビルドシステムなしで単純なMakefileを使用するだけです。
  • LinuxはGCCを使用し、WindowsはMinGWを使用します。

私のアプリケーションは多くのライブラリに依存しています。幸いなことに、私のディストリビューションは開発ヘッダーを提供するので、Linuxコンパイルはpkg-configを使用してほぼ即座に動作し、CFLAGSとLDFLAGSを決定します。

Windowsではうまく動作しません。私のディストリビューションは、開発ヘッダーを見つけることができるx86_64-w64-mingw32用のコンパイラツールチェーンを提供していますが、一部のライブラリではWindows用に異なるバージョンが必要です。残念ながら、これら私のディストリビューションはバージョンを提供していないので、自分でインストールする必要があります。

それでは、Windows用の開発ヘッダーはどこにインストールする必要がありますか? pkg-configを見つけるにはどうすればよいですか?単一のコマンドでLinux用にコンパイルできるように、単一のコマンドでWindows用にコンパイルする方法はありますかmake


私の場合、問題のライブラリの1つはSDL2でした。私のディストリビューションに付属のヘッダーを使用してコンパイルしようとすると、fatal error: iconv.h: No such file or directory.Googling このエラーが発生し、Windows バージョンを使用するように求められます。他のライブラリはコンパイル段階で動作しているように見えますが、接続段階では見つかりません。

答え1

x86_64-w64-mingw32/usr/x86_64-w64-mingw32通常、ツールチェーンで使用するライブラリを構築するには、プレフィックスを使用する必要があります。

./configure --prefix=/usr/x86_64-w64-mingw32 --host=x86_64-w64-mingw32

そして必要なその他のオプション。

これによりヘッダは/usr/x86_64-w64-mingw32/include、ライブラリは/usr/x86_64-w64-mingw32/libpkg-configファイルは/usr/x86_64-w64-mingw32/lib/pkgconfigツールチェーンが見つかると予想される位置にあるようになります。

については、通話が使用中であることをpkg-config確認する必要があります(オプションで自動的に発生する必要があります)。まだインストールしていない場合はインストールする必要があります。./configurex86_64-w64-mingw32-pkg-config--hostmingw-w64-tools

(私はmingw-w64Debianの管理者です。あなたが提供できるフィードバックに興味があります。特に、私はiconvしばらくWindowsのパッケージングについて考えてきましたが、時間が節約されたらもう少し上げてみましょう。

関連情報