.pro-file中的RPATH不工作

RPATH in .pro-file not working

本文关键字:工作 RPATH 中的 pro-file      更新时间:2023-10-16

我正在尝试将$ORIGIN添加到我的程序的rpath变量中。

我在我的.pro文件中添加了以下行:

unix: QMAKE_RPATHDIR += $$ORIGIN

并通过检查编译输出来验证是否真的添加了该命令。qmake生成的对g++的调用如下所示:

g++ -Wl,-rpath,/home/sky/Qt/5.5/gcc_64 -Wl,-rpath,$ORIGIN -Wl...

可以看到,添加了origin(以及其他一些值)。但是,如果我使用readelf检查rpath的值,originis没有列出。相反,除了qmake:

添加的条目外,它还显示一个"空"条目(只有两个冒号)。
 0x000000000000000f (RPATH)              Bibliothek rpath: [/home/sky/Qt/5.5/gcc_64::/home/sky/Qt/5.5/gcc_64/lib]

我在这里错过了什么?谢谢你的帮助!

这里是"qmake and rpath":

你必须使用运行时链接器的$ORIGIN特性。不幸的是,由于加载器开发者的远见卓识,他们用'$'作为前缀,这使得它非常麻烦通过周围。不可能在QMAKE_RPATHDIR中使用它。你必须而不是使用:

QMAKE_LFLAGS += '-Wl,-rpath,'$$ORIGIN''

以便它在项目文件和Makefile中都存在。


在命令行中,当-Wl,-rpath,$ORIGIN$ORIGIN展开时,它进入shell,因为shell解释了$ $符号。它应该被引用。这种报价的例子也提供在LD.SO(8)手册页:gcc -Wl,-rpath,'$ORIGIN/../lib' .