QTアプリがQTモジュールを見つけた場所を設定するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2497192

  •  21-09-2019
  •  | 
  •  

質問

libqtgui.so.4 libqtnetwork.so.4とlibqtcore.4を、アプリが存在する場所と同じディレクトリに含めたいと思います。 QTにこれを理解させるにはどうすればよいですか? Yの目的は、共有ライブラリを使用するスタンドアロンアプリを持つことです

役に立ちましたか?

解決

LD_LIBRARY_PATH環境変数の設定は1つのオプションです。例えば:

export LD_LIBRARY_PATH=/path/to/dir/with/libs:$LD_LIBRARY_PATH

別のオプションは、リンク中にQTアプリケーションのRPATを設定することです。 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が「$ ovirion:$ origin/lib:$ ogin/libs」に設定されます。つまり、動的リンカーは最初にQTアプリケーションの場所を見て、次にその場所のlibサブディレクトリで、次にlibsで見ることができます。その場所のサブディレクトリ、そして最終的にどのシステムでも定義された場所で。

他のヒント

Unix / Linuxは、システム標準LIBSを見る前に、最初にLD_LIBRARY_PATH(設定されている場合)を調べます。したがって、それを設定すると、実際にオーバーライドできます。 Windowsにパスを設定するのと同じように。同じ効果。順序付けが重要です。

./または。 ld_library_pathへ。

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

LD_LIBRARY_PATHQMAKE_RPATH 私のために働いたことはありません。代わりに、設定します QMAKE_RPATHDIR 私の中で .pro ファイル。たとえば、構築してインストールした後(make install)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:バイナリが正しいライブラリに動的にリンクすることを確認するには、QTのバージョンを実行時に配信して表示できます。 qVersion().

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top