libQtGui.so.4 libQtNetwork.so.4 と libQtCore.so.4 をアプリと同じディレクトリに含めたいと思います。Qtにこれを理解させるにはどうすればよいですか? y の目的は、共有ライブラリを使用するスタンドアロン アプリを用意することです
3 に答える
LD_LIBRARY_PATH環境変数の設定は1つのオプションです。例えば:
export LD_LIBRARY_PATH=/path/to/dir/with/libs:$LD_LIBRARY_PATH
もう1つのオプションは、リンク中にQtアプリケーションのRPATHを設定することです。RPATHを値「$ORIGIN」に設定すると、ダイナミックリンカは実行時にQtアプリケーションと同じディレクトリを検索します。たとえば、qmakeを使用している場合は、次のスニペットをプロジェクトファイルに追加します。
unix:!mac{
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/libs
QMAKE_RPATH=
}
これにより、RPATHが「$ ORIGIN:$ ORIGIN / lib:$ ORIGIN / libs」に設定されます。つまり、ダイナミックリンカは最初にQtアプリケーションの場所を検索し、次にその場所のlibサブディレクトリを検索し、次にlibsを検索します。その場所にあるサブディレクトリ、そして最後にシステムで定義された場所にあるサブディレクトリ。
UNIX / Linux は、システムの標準ライブラリを調べる前に、まず LD_LIBRARY_PATH (設定されている場合) を調べます。したがって、それを設定すると、実際にオーバーライドできます。Windows で PATH を設定するのと同じです。同じ効果。順序が重要です。
./ または . を追加できます。LD_LIBRARY_PATH にも。
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
LD_LIBRARY_PATH
そしてQMAKE_RPATH
私のために働いたことはありません。代わりにQMAKE_RPATHDIR
、.pro
ファイルに設定しました。たとえば、( make install
) Qt をビルドしてインストールした後、Qt は に配置されてい/usr/local/Trolltech/Qt-4.8.5/lib/
ます。.pro
次に、ファイルに次のように記述します。
QMAKE_RPATHDIR += /usr/local/Trolltech/Qt-4.8.5/lib/
注 1: 相対パスは機能していないようです。絶対パスを優先します。
注 2: するとmake
、リンカーに次のオプションが指定されていることがわかります。-Wl,-rpath,/usr/local/Trolltech/Qt-4.8.5/lib/
注 3: バイナリが正しいライブラリに動的にリンクしていることを確認するには、qVersion()
.