Linux x86_64 ホスト マシンを使用して、Windows x86_64 ターゲット用に Qt ライブラリ (および最終的にはアプリケーション) をクロス コンパイルしたいと考えています。近い気がしますが、このプロセスのいくつかの部分について根本的な誤解をしている可能性があります。
まず、すべての mingw パッケージを Fedora マシンにインストールし、win32-g++
qmake.conf ファイルを環境に合わせて変更しました。ただし、Qt:-platform
および-xplatform
. Qt のドキュメントによると、これ-platform
はホスト マシン アーキテクチャ (コンパイルする場所) であり-xplatform
、展開するターゲット プラットフォームである必要があります。私の場合は、変更した win32-g++ 構成を linux-win32-g++ に設定-platform linux-g++-64
しました。-xplatform linux-win32-g++
私の問題は、これらのオプションを指定して configure を実行した後、クロス コンパイラ (x86_64-w64-mingw32-gcc) ではなくシステムのコンパイラが呼び出されることです。-xplatform
オプションを省略-platform
してターゲット仕様 (linux-win32-g++) に設定すると、クロス コンパイラが呼び出されますが、Unix 関連の関数が定義されていないことが検出されるとエラーが発生します。
これが私の最新の試みからの出力です: http://pastebin.com/QCpKSNev .
質問:
Qt for Windows などを Linux ホストからクロスコンパイルする場合、ネイティブ コンパイラを呼び出す必要がありますか? つまり、クロス コンパイル プロセスでは、クロス コンパイラだけを使用するべきではないでしょうか。
-xplatform
オプションを指定すると、Qt の構成スクリプトがシステムのネイティブ コンパイラを呼び出そうとする理由がわかりません。mingw クロスコンパイラを使用している場合、specs ファイルはいつ処理する必要がありますか? GCC の仕様ファイルは、私にとっていまだに謎に包まれているため、ここでの背景が役立つかどうか疑問に思っています。
一般に、qmake.conf でクロス コンパイラを指定する以外に、他に何を考慮する必要がありますか?