[解決済み] Qt を Linux から Windows にクロスコンパイルするにはどのように設定すればよいですか?
質問
Linux x86_64 ホストマシンを使用して Windows x86_64 ターゲット用に Qt ライブラリ (そして最終的には私のアプリケーション) をクロスコンパイルしたいです。私は近くにいるように感じていますが、このプロセスのいくつかの部分について根本的な誤解をしているかもしれません。
私は Fedora マシンにすべての mingw パッケージをインストールすることから始め、次に
win32-g++
qmake.conf ファイルを私の環境に合うように修正しました。しかし、Qt 用のいくつかの一見明白な configure オプションで行き詰っているようです。
-platform
と
-xplatform
. Qt のドキュメントでは
-platform
はホストマシンアーキテクチャ(コンパイルする場所)、そして
-xplatform
はデプロイしたいターゲットプラットフォームです。私の場合は
-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 .
質問です。
-
Qt for Windows のようなものを Linux ホストからクロスコンパイルする場合、ネイティブ コンパイラは これまで を呼び出すべきでしょうか? つまり、クロスコンパイルプロセス中に のみ を使うべきではありませんか?Qtのconfigureスクリプトが、私のシステムのネイティブコンパイラーを呼び出そうとする理由がわかりません。
-xplatform
オプションを指定したときに、Qt の configure スクリプトが私のシステムのネイティブコンパイラを起動しようとする理由がわかりません。 -
mingw クロス コンパイラーを使用している場合、いつ specs ファイルに対処しなければならないのでしょうか。GCC の spec ファイルは、私にとってまだ謎のようなものなので、ここでのいくつかの背景が私を助けてくれるのではないかと思っています。
-
一般的に、私の qmake.conf でクロス コンパイラーを指定すること以外に、私は何を考慮する必要がありますか?
どのように解決するのですか?
ただ Mクロス環境(MXE) . これは、すべてのプロセスから苦痛を取り除きます。
-
手に入れる。
$ git clone https://github.com/mxe/mxe.git
-
インストール ビルドの依存関係
-
Qt for Windows、その依存関係、およびクロスビルドツールをビルドします。 これは、適切なインターネットアクセスのある高速なマシンで約 1 時間かかります。 ダウンロードは約 500MB です。
$ cd mxe && make qt
-
アプリのディレクトリに移動し、クロスビルドツールを PATH 環境変数に追加します。
$ export PATH=<mxe root>/usr/bin:$PATH
-
Qt Makefile生成ツールを実行し、ビルドします。
$ <mxe root>/usr/i686-pc-mingw32/qt/bin/qmake && make
-
./releaseディレクトリにバイナリがあるはずです。
$ wine release/foo.exe
いくつかの注意事項 :
-
MXE リポジトリの master ブランチを使用します; それは開発チームからより多くの愛を受けているようです。
-
出力は32ビットの静的バイナリで、64ビットのWindowsでうまく動作するでしょう。
関連
-
LinuxでPingを無効にする、または許可する設定方法
-
Deepin20システムのフォントを設定するには?Deepin端末のフォントサイズを設定する方法
-
[解決済み] Linuxでデータファイルから最初の列(実際には行名)を削除する方法は?
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] フォルダとそのサブフォルダ/ファイルのパーミッションを一括で変更する方法
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] find .コマンドでディレクトリを除外する方法
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] 複数のPDFファイルを1つのPDFに結合/変換する【終了】。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Manjaro linuxでマウスの速度を設定する方法は?Manjaroのマウスのカーソル速度を設定する方法に関するヒント
-
deepinv20 linux ファイルのサフィックスを変更する方法は?Linuxでファイルの拡張子を変更する方法
-
rsyncとinotfiyの組み合わせでリアルタイムバックアップ問題を実現
-
Linux Mintシステムでプログラムをアンインストールするには? Linux で不要なアプリケーションをアンインストールするためのヒント
-
リクエスト・エンティティが大きすぎる問題の解決策
-
[解決済み] Linuxでデータファイルから最初の列(実際には行名)を削除する方法は?
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] 複数のPDFファイルを1つのPDFに結合/変換する【終了】。
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] POSIX」の意味を教えてください。