Ubuntu 12.04 64ビットのコンピューターで、Qtクリエーター(Qt 4.8.1(64ビット)に基づくv2.5.0)を使用してQtプログラムを作成しています。私のコンピュータでは問題なく動作し、満足しています。
しかし、今はアプリをデプロイしたいので、プロジェクトを静的にビルドすることにしました。そのために、Qt を (4.8.3 ソースから) 静的にコンパイルし、Qt クリエーターで qmake の選択を変更し (「静的」のものに置き換え)、ビルド設定で「静的ビルド」を選択しました。
最初は完全に動作しているように見えました: 私の新しい実行可能ファイルは (通常の 1Mb ではなく) 15Mb で、依存関係をチェックするために ldd ./myApp を実行したとき、libQtGui.so.4 も libQtCore.so.4 もありませんでした。プログラムは問題なく動作するように見えました。
その後、Qt Creator がアプリケーションの出力で絶えず叫んでいることに気付きました。
「Gtk-CRITICAL **: IA__gtk_widget_style_get: アサーション `GTK_IS_WIDGET (ウィジェット)' が失敗しました」
どうしたの?さらに悪いことに、プログラムのヘルプ メニューを読み込もうとすると、どういうわけかウィンドウが開かず、フリーズします。ヘルプ メニューは、QTextBrowser (いくつかの png 画像を含む html ファイルを表示する) といくつかのボタンを含む単なるウィジェットです。アプリの出力で次のエラーが繰り返し表示されます。
* *X エラー: BadDrawable (無効な Pixmap または Window パラメーター) 9 メジャー オペコード: 62 (X_CopyArea) リソース ID: 0x0**
および 1 つ (または複数?) QNativeImage: 共有メモリ セグメントに接続できません。
qmake の静的バージョン (Qt オプション、ビルド & 実行、Qt バージョン タブ) を追加したときに、「qmlviewer がインストールされていません」という警告が表示されるという事実に関係している可能性があります。何も思いつきません。
とにかく、私はがっかりして落ち込んでいます。アプリの展開は予想よりもはるかに難しく、信じられないほど面倒です. これを修正する方法を知っている人はいますか?
ここにいる間、他にもいくつかの小さな質問があります。
qmake myApp.pro -r -spec linux-g++
Qt 作成者がandmake -w
の代わりにqmake
andを行うことは重要make
ですか?- 私は .pro ファイルに LIBS を追加するためにいくつかの場所を読みました。また、CONFIG += static と書くべき場所を 1 つ読みました。)、しかし、これはすべて何もしないようです。それは問題ですか?
よろしくお願いいたします。