如何设置可执行文件在编译时在同一目录下搜索共享库, 我已经将可执行文件和相关的 .so 库放在同一目录中,而不是更改 LD_LIBRARY_PATH 或/etc/ld.so.conf, 是否可以将 -rpath 设置为一个变量,该变量是保存可执行文件的目录,并且该变量不是特定路径,它是可变的。
最佳答案
Is it possible to set -rpath as a variable
是的:您希望将 DT_RPATH
设置为 $ORIGIN
,如下所示:
gcc main.c -Wl,-rpath='$ORIGIN' -lfoo -lbar
注意:您需要对 $ORIGIN
进行单引号以防止 shell 扩展它 -- RPATH
必须 包含 $
符号。
另一种选择是像这样链接:
gcc main.c ./libfoo.so ./libbar.so
这仅在 libfoo.so
和 libbar.so
没有设置了 DT_SONAME
时有效,并且通常是劣等解决方案。我只是在这里提到它是为了完整性。
关于linux - 如何在编译中使用 -rpath 设置可执行文件在同一目录中搜索共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39554743/