.pro 文件中的 RPATH 不起作用
RPATH in .pro-file not working
我正在尝试将 $ORIGIN
添加到我程序的 rpath 变量中。
我在我的 .pro 文件中添加了以下行:
unix: QMAKE_RPATHDIR += $$ORIGIN
并通过检查编译输出来验证是否真的添加了该命令。 qmake 生成的对 g++ 的调用如下所示:
g++ -Wl,-rpath,/home/sky/Qt/5.5/gcc_64 -Wl,-rpath,$ORIGIN -Wl...
如您所见,添加了原点(以及其他一些值)。但是,如果我使用 readelf
检查 rpath 的值,则不会列出 origin。相反,除了 qmake 添加的条目外,它还显示一个 "empty" 条目(只有两个冒号):
0x000000000000000f (RPATH) Bibliothek rpath: [/home/sky/Qt/5.5/gcc_64::/home/sky/Qt/5.5/gcc_64/lib]
我在这里错过了什么?感谢您的帮助!
You have to use the $ORIGIN feature of the runtime linker.
Unfortunately, due to some brilliant foresight of the loader devs,
they used '$' as prefix, which makes it a royal pain in the ass to
pass around. It's impossible to use it in QMAKE_RPATHDIR. You must
instead use:
QMAKE_LFLAGS += '-Wl,-rpath,\'$$ORIGIN\''
so that it survives both the project file as well as the Makefile.
在您的命令行中,它转到 shell,因为 -Wl,-rpath,$ORIGIN
和 $ORIGIN
被扩展,因为 $ 美元符号由 shell 解释。它应该被引用。 LD.SO(8) man page 中也提供了此类引用的示例:gcc -Wl,-rpath,'$ORIGIN/../lib'
.
我正在尝试将 $ORIGIN
添加到我程序的 rpath 变量中。
我在我的 .pro 文件中添加了以下行:
unix: QMAKE_RPATHDIR += $$ORIGIN
并通过检查编译输出来验证是否真的添加了该命令。 qmake 生成的对 g++ 的调用如下所示:
g++ -Wl,-rpath,/home/sky/Qt/5.5/gcc_64 -Wl,-rpath,$ORIGIN -Wl...
如您所见,添加了原点(以及其他一些值)。但是,如果我使用 readelf
检查 rpath 的值,则不会列出 origin。相反,除了 qmake 添加的条目外,它还显示一个 "empty" 条目(只有两个冒号):
0x000000000000000f (RPATH) Bibliothek rpath: [/home/sky/Qt/5.5/gcc_64::/home/sky/Qt/5.5/gcc_64/lib]
我在这里错过了什么?感谢您的帮助!
You have to use the $ORIGIN feature of the runtime linker. Unfortunately, due to some brilliant foresight of the loader devs, they used '$' as prefix, which makes it a royal pain in the ass to pass around. It's impossible to use it in QMAKE_RPATHDIR. You must instead use:
QMAKE_LFLAGS += '-Wl,-rpath,\'$$ORIGIN\''
so that it survives both the project file as well as the Makefile.
在您的命令行中,它转到 shell,因为 -Wl,-rpath,$ORIGIN
和 $ORIGIN
被扩展,因为 $ 美元符号由 shell 解释。它应该被引用。 LD.SO(8) man page 中也提供了此类引用的示例:gcc -Wl,-rpath,'$ORIGIN/../lib'
.