2017-05-28 10 views
0

Qt 5.8を使用してアプリケーションを作成しました。このアプリはUbuntu 16.04で開発されました。Linux上のQt 5.8(ubuntu 16.04)アプリケーションの展開

は、実行ldd app_name後、私はアプリが使用しているライブラリを参照することができます:

linux-vdso.so.1 => (0x00007ffe16bef000) 
libmysqlclient.so.20 => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20 (0x00007f1f455b0000) 
libQt5Widgets.so.5 => /home/r0ng/Qt/5.8/gcc_64/lib/libQt5Widgets.so.5 (0x00007f1f44d7f000) 
libQt5Gui.so.5 => /home/Qt/5.8/gcc_64/lib/libQt5Gui.so.5 (0x00007f1f445e3000) 
libQt5Core.so.5 => /home/Qt/5.8/gcc_64/lib/libQt5Core.so.5 (0x00007f1f43ec3000) 
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1f43b41000) 
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1f4392a000) 
... ... 

を今、私は他のLinuxマシン上の展開に自分のアプリケーションをしようとしています。 最初に確認したのは、公式の文書です。 http://doc.qt.io/qt-5/linux-deployment.html

私にはconfigureスクリプトがありません。

find -type f -name "configure*" 
./Docs/Qt-5.8/qtgamepad/images/configuregamepadbuttons-example.png 
./Docs/Qt-5.8/qtdoc/configure-options.html 
./Examples/Qt-5.8/gamepad/configureButtons/configureButtons.pro 
./Examples/Qt-5.8/gamepad/configureButtons/doc/images/configuregamepadbuttons-example.png 
./5.8/gcc_64/mkspecs/features/configure_base.prf 
./5.8/gcc_64/mkspecs/features/configure.prf 
./5.8/android_armv7/mkspecs/features/configure_base.prf 
./5.8/android_armv7/mkspecs/features/configure.prf 

configureスクリプトを入手するには、特定の方法でQtをインストールする必要がありますか?また、Qt Maintenaceツールでスクリプトを見つけようとしています。しかし、そこには何もない。

もう1つの試みはこのスレッドに基づいています Deployment of QT apps on linux開発者がすべてのダイナミックライブラリをアプリケーションの現在の作業ディレクトリにコピーできるQtプロジェクトファイル(* .pro)のようです。しかし、私は値ORIGINを設定する手掛かりがありません。その場合、-Wr -rpathは何をしますか?

Qtが現在の作業ディレクトリから* .soファイルをロードする方法を知っている人は誰ですか?あなたがソースからのQtを構築し、おそらくあなたがそれを必要としないとき

おかげ

+0

"configureスクリプトを入手するには、Qtを特定の方法でインストールする必要がありますか?" 'configure'スクリプトを用意するためには、ビルド済みでソースからQtをビルドしてインストールする必要があると思います。これは、* nixソフトウェアのための規約です。 – MrEricSir

+0

[パッケージを使用したデプロイ](https://stackoverflow.com/documentation/debian/9925/create-a-debian-package#t=201705290824497346076)をご覧ください。 –

答えて

1

configureスクリプトが存在しています。現在の作業ディレクトリから共有ライブラリをロードするには、LD_LIBRARY_PATHのenv変数を共有ライブラリがあるディレクトリに指定する必要があります。これを行うスクリプトの例は、公式QtのドキュメントLinux Deploymentで見つけることができます。例えば、私は私の展開上、この変更したスクリプトを使用します。

#!/bin/sh 
dirname=`dirname $0` 
tmp="${dirname#?}" 

if [ "${dirname%$tmp}" != "/" ]; then 
dirname=$PWD/$dirname 
fi 
LD_LIBRARY_PATH=$dirname 
export LD_LIBRARY_PATH 
$dirname/myapp "[email protected]" 

をそして、これは私は現在、配布、私のQtアプリケーションの一つのディレクトリ構成の一例である:

./myapp 
./myapp.png 
./myapp.sh 
./libQt5X11Extras.so.5 
./libQt5Core.so.5 
./libQt5Network.so.5 
./libQt5XcbQpa.so.5 
./libicui18n.so.56 
./libQt5Gui.so.5 
./libicuuc.so.56 
./libicudata.so.56 
./sqldrivers 
./sqldrivers/libqsqlite.so 
./libQt5Widgets.so.5 
./translations 
./translations/qt_es.qm 
./translations/qt_en.qm 
./platforms 
./platforms/libqxcb.so 
./libQt5Sql.so.5 
./libQt5DBus.so.5 
./bearer 
./bearer/libqnmbearer.so 
./bearer/libqgenericbearer.so 
./bearer/libqconnmanbearer.so 
./imageformats 
./imageformats/libqjpeg.so 

もちろん、あなたは意志アプリケーションの依存関係に応じて、より多くのライブラリまたは少ないライブラリが必要になります。私は現在、公式のQt 5.8インストーラを使用しているので、共有ライブラリはディストリビューションが提供するものではなく、そこから提供されます。

関連する問題