いくつかの Qt インターフェース プログラムを作成しましたが、Qt 環境がインストールされていない他のコンピューターに移植するのが難しいことがわかりました。情報を調べたところ、Windows には windowsdeployqt プログラムがあり、Linux には linuxdeployqt があり、これらを使用してパッケージを迅速に作成できることがわかりました。 1. Qt環境を設定する まず、Qt 環境を設定し、~/.bashrc に次の行を追加します。 エクスポート PATH=/home/xl/Qt5.9.2/5.9.2/gcc_64/bin:$PATH LD_LIBRARY_PATH=/home/xl/Qt5.9.2/5.9.2/gcc_64/lib:$LD_LIBRARY_PATH をエクスポートします。 エクスポート QT_PLUGIN_PATH=/home/xl/Qt5.9.2/5.9.2/gcc_64/plugins:$QT_PLUGIN_PATH エクスポート QML2_IMPORT_PATH=/home/xl/Qt5.9.2/5.9.2/gcc_64/qml:$QML2_IMPORT_PATH 次に、 2. linuxdeployqtをコンパイルする プロジェクトアドレス: https://github.com/probonopd/linuxdeployqt.git。 コンパイルされたパッケージはリリースされていますが、私は Ubuntu 18 を使用しており、システム バージョンが高すぎるため、コードをコンパイルすることを選択します。 コンパイルされたパッケージがシステム バージョンが高すぎることを検出し、実行を継続しないという問題を回避するために、コンパイルする前に // openSUSE Leap 15.0 は glibc 2.26 を使用し、OBS で使用されます /*if (strverscmp (glcv, "2.27") >= 0) { //コメントバージョンチェック qInfo() << "エラー: ホストシステムが新しすぎます。"; qInfo() << "最も古いバージョンよりも新しいバージョンの glibc を搭載したシステムで実行してください"; qInfo() << "現在もサポートされているメインストリームディストリビューション (xenial)、つまり glibc 2.23。"; qInfo() << "これにより、結果として得られるバンドルは、現在もサポートされているほとんどの Linux ディストリビューションで動作します。"; qInfo() << "詳細については、以下を参照してください"; qInfo() << "https://github.com/probonopd/linuxdeployqt/issues/340"; 1 を返します。 }*/ その後、cmake と make を使用してコンパイルできます。生成された実行可能プログラムは 最後に、使いやすさのために、生成された実行可能プログラムをシステムの 3. パッケージ Qt でコンパイルされたプログラムを別のフォルダーにコピーします。 次に、 通常は問題なく完了します。カレントディレクトリに Apprun がありますので、そのまま実行してください。 しかし、システム内に対応するライブラリが不足しているため、スムーズに動作しないこともあります。たとえば、私が遭遇したエラーは次のとおりです。 エラー: patchelf を起動できませんでした。 エラー: $PATH にインストールされていることを確認してください。 エラー: patchelf "libQt5Widgets.so" で rpath を読み取り中にエラーが発生しました: "" エラー: patchelf "libQt5Widgets.so" で rpath を読み取り中にエラーが発生しました: "" このエラーは、必要な pathchelf ツールが見つからないことを示し、直接インストールすることで解決できます。 その後、次のエラーが発生しました。
これは、システムに libqjp2.so ライブラリが存在しないことを示しています。実は非常に奇妙です。ローカル バージョンは明らかに実行できるのに、なぜこのライブラリ ファイルが欠落しているのでしょうか?しかし、解決策は非常に簡単で、不足しているものをインストールするだけです。 sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" sudo aptアップデート sudo apt インストール libjasper1 libjasper-dev 設置完了後はスムーズに梱包されます。 要約する 上記は、linuxdeployqt を使用して Ubuntu で Qt プログラムをパッケージ化する方法について紹介したものです。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: Mysql でよく使用される時間、日付、変換関数の概要
>>: vue-router からのフロントエンドルーティングの 2 つの実装
VMware が異常シャットダウンした後、再起動すると「この構成ファイルを排他的にロックできませんで...
前回の記事「202 個の無料高品質 XHTML テンプレート (1)」に続き、123WORDPRES...
このチュートリアルでは CentOS 7 64 ビットを使用します。各仮想マシンに 2GB のメモリ...
1. 問題の説明セキュリティ上の理由から、新しく構築されたサーバー クラスターでは、指定されたポート...
ファイルの切り替えは Linux でよく行われる操作です。Linux を初めて学ぶときに最初に触れる...
まず、データベース パーティショニングとは何でしょうか?以前、MySQL のテーブル パーティショニ...
目次1. MySQLレプリケーションプロセス2. MySQLの遅延問題の分析3. プロモーション期間...
取引の実施REDO ログはトランザクションの永続性を保証し、UNDO ログはトランザクションのロール...
Docker パッケージは、デフォルトの CentOS-Extras リポジトリにすでに含まれていま...
1 ストアドプロシージャ1.1 ストアドプロシージャとは何かストアド プロシージャは、特定の機能を実...
HTML メタタグHTML メタタグは、Web ページのコンテンツに関する情報をブラウザや検索エンジ...
MySQL では、同じ列に複数のインデックスを作成できます。意図的であるかどうかにかかわらず、MyS...
目次説明する成し遂げるプロジェクトのディレクトリ構造は次のとおりです。効果図は以下のとおりです要約す...
目次1. 二重連結リストとは何か2. 双方向リンクリストのカプセル化3. 双方向リンクリストの一般的...
1. オーバーフローOverflow はオーバーフロー(コンテナ)です。コンテンツがコンテナを越える...