Qtオンラインインストーラーを使用してqtcreatorをインストールしました。独自のバージョンのqtライブラリが同梱されています。 qtライブラリもシステムディレクトリにインストールされますが、古いものです。 qtcreatorに問題があります( qt-forums を参照)。これが疑われるのは、Qtが古いシステムライブラリを使用しているためかもしれません。
strace -e open qtcreator.sh
実際、/ usr/lib/x86_64-linux-gnu/qtcreator /のライブラリを使用します
正しいライブラリをロードするために、qrcreator.shスクリプトはLD_LIBRARY_PATHを
/home/<me>/Qt/Tools/QtCreator/lib:/home/<me>/Qt/Tools/QtCreator/lib/qtcreator
これは正しいですが、それでも/ usr/lib/x86_64-linux-gnu/qtcreatorのライブラリが使用されます。
システム全体のライブラリが存在するにもかかわらず、ローカルライブラリを使用するようにqtcreatorに指示するにはどうすればよいですか?
Nathanのオプションに、実行可能ファイルのpatchelf
を変更できるRPATH
を追加します。 UbuntuはRPATH
でこれらを定義する問題があり、profile
でこれを定義していないかのように、LD_LIBRARY_PATH
などを定義するよりもprofile
をパッチすることを個人的に好みます。ラッパースクリプトの。
アプリケーションのディレクトリに相対的な実行可能ファイルRPATH
を定義するには(必要な場合は必須ではありません)、$Origin
を使用する必要があります$
をエスケープするには、文字どおりに表示する必要があります(シェルからpatchelf
を呼び出す場合は、\$Origin
を使用します)。例アプリケーションがbin
ディレクトリに属し、ライブラリがピアlib
ディレクトリに属する場合、RPATH
には$Origin/../lib
を使用します。
必要に応じて、絶対RPATH
を使用することもできます。
Patchelf(nixos.org) を参照してください。
「LD_PRELOAD」環境変数を使用してライブラリをプリロードできます。 soファイルのフルパスを次のように指定するだけです。
export LD_PRELOAD = "/path/to/so1.so /path/to/so2.so"