11

libQtGui.so.4 libQtNetwork.so.4 と libQtCore.so.4 をアプリと同じディレクトリに含めたいと思います。Qtにこれを理解させるにはどうすればよいですか? y の目的は、共有ライブラリを使用するスタンドアロン アプリを用意することです

4

3 に答える 3

9

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を検索します。その場所にあるサブディレクトリ、そして最後にシステムで定義された場所にあるサブディレクトリ。

于 2010-03-23T04:35:17.457 に答える
0

UNIX / Linux は、システムの標準ライブラリを調べる前に、まず LD_LIBRARY_PATH (設定されている場合) を調べます。したがって、それを設定すると、実際にオーバーライドできます。Windows で PATH を設定するのと同じです。同じ効果。順序が重要です。

./ または . を追加できます。LD_LIBRARY_PATH にも。

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
于 2010-03-23T02:33:03.783 に答える
0

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().

于 2013-01-04T08:05:14.350 に答える