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