我使用 qt online 安装程序安装了 qtcreator。它附带了自己版本的 qt 库。qt 库也安装在系统目录中,但那些比较旧。我在使用 qtcreator 时遇到了问题(请参阅qt 论坛)。我怀疑这可能是因为 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 使用本地库?
答案1
对于 Nathan 的选项,我想添加patchelf
允许更改RPATH
可执行文件的选项。我个人更喜欢修补而不是RPATH
定义之LD_LIBRARY_PATH
类的东西,因为 Ubuntu 在定义这些方面存在问题,profile
并且如果未在中定义这些profile
,则无需使用包装器脚本。
要定义相对于应用程序目录的可执行文件RPATH
(如果你愿意,这不是必须的),你必须使用$ORIGIN
小心避开$
必须按字面意思出现(因此如果您从 shell\$ORIGIN
调用,请使用)。例如,如果应用程序属于某个目录,而库属于对等目录,则您将使用。patchelf
bin
lib
$ORIGIN/../lib
RPATH
RPATH
如果愿意的话,您也可以使用绝对值。
答案2
可以使用“LD_PRELOAD”环境变量预加载库。只需指定 so 文件的完整路径,如下所示:
export LD_PRELOAD = "/path/to/so1.so /path/to/so2.so"