Ubuntuでlinuxdeployqtを使用してQtプログラムをパッケージ化
3292 ワード
Qtインタフェースプログラムを少し書きましたが、他のQt環境がインストールされていないパソコンに移植して実行するのは難しいことがわかりました.資料を調べてみると、windowsにはwindowsdeployqtプログラムがあり、linuxにはlinuxdeployqtがあり、迅速にパッケージ化することができます.
まず、Qt環境を
このうち
プロジェクトのアドレス:https://github.com/probonopd/linuxdeployqt.git . コンパイルされたパッケージをリリースしていますが、Ubuntu 18を使用しているので、システムバージョンが高すぎるので、コードをコンパイルする方法を選択します.コンパイルされたパケットの実行時にシステムバージョンが高すぎることを検出し、実行を継続しないという問題を回避するために、コンパイル前に
その後、cmakeとmakeを使用してコンパイルできます.生成された実行可能プログラムは
Qtコンパイルされた良いプログラムを別のフォルダにコピーします.そして、
このエラーは、必要な
次のエラーが発生しました.
これは,我々のシステムに
インストールが完了したら、スムーズに梱包できました.
転載先:https://www.cnblogs.com/xl2432/p/11124415.html
1.Qt環境の構成
まず、Qt環境を
~/.bashrc
に追加します.export PATH=/home/xl/Qt5.9.2/5.9.2/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=/home/xl/Qt5.9.2/5.9.2/gcc_64/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=/home/xl/Qt5.9.2/5.9.2/gcc_64/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=/home/xl/Qt5.9.2/5.9.2/gcc_64/qml:$QML2_IMPORT_PATH
このうち
/home/xl/Qt5.9.2/5.9.2/
ディレクトリは、自分のパソコンにインストールされているQtパスに基づいて変更されます.その後、sourec ~/.bashrc
を実行して構成を有効にします.2.linuxdeployqtのコンパイル
プロジェクトのアドレス:https://github.com/probonopd/linuxdeployqt.git . コンパイルされたパッケージをリリースしていますが、Ubuntu 18を使用しているので、システムバージョンが高すぎるので、コードをコンパイルする方法を選択します.コンパイルされたパケットの実行時にシステムバージョンが高すぎることを検出し、実行を継続しないという問題を回避するために、コンパイル前に
tools/linuxdeployqt/main.cpp
の次のコードを注釈します. // openSUSE Leap 15.0 uses glibc 2.26 and is used on OBS
/*if (strverscmp (glcv, "2.27") >= 0) { //
qInfo() << "ERROR: The host system is too new.";
qInfo() << "Please run on a system with a glibc version no newer than what comes with the oldest";
qInfo() << "currently still-supported mainstream distribution (xenial), which is glibc 2.23.";
qInfo() << "This is so that the resulting bundle will work on most still-supported Linux distributions.";
qInfo() << "For more information, please see";
qInfo() << "https://github.com/probonopd/linuxdeployqt/issues/340";
return 1;
}*/
その後、cmakeとmakeを使用してコンパイルできます.生成された実行可能プログラムは
tools/linuxdeployqt/linuxdeployqt
である.最後に、使いやすいように、生成された実行可能プログラムをシステムの/usr/local/bin/
ディレクトリにコピーすることができる.3.梱包
Qtコンパイルされた良いプログラムを別のフォルダにコピーします.そして、
linuxdeployqt appname
が実行する.一般的には順調に完成し、現在のディレクトリにはApprun
があり、直接実行すればいいです.しかし、それほどうまくいかない場合もあります.システムには対応するライブラリが不足しているはずです.たとえば、私が遭遇したエラーは次のとおりです.ERROR: Could not start patchelf.
ERROR: Make sure it is installed on your $PATH.
ERROR: Error reading rpath with patchelf "libQt5Widgets.so" : ""
ERROR: Error reading rpath with patchelf "libQt5Widgets.so" : ""
このエラーは、必要な
pathchelf
ツールが不足していることを示しており、直接インストールすれば解決できます.sudo apt install patchelf
次のエラーが発生しました.
ERROR: ldd outputLine: "libjasper.so.1 => not found"
ERROR: for binary: "/home/xl/Qt5.9.2/5.9.2/gcc_64/plugins/imageformats/libqjp2.so"
ERROR: Please ensure that all libraries can be found by ldd. Aborting.
これは,我々のシステムに
libqjp2.so
というライブラリが欠けていることを示している.実は不思議なことに、地元はもう走れるのに、どうしてこのライブラリファイルが欠けているのか.しかし、解決策は簡単で、欠けているものは何でも入れます.sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
インストールが完了したら、スムーズに梱包できました.
転載先:https://www.cnblogs.com/xl2432/p/11124415.html