rpath 值可以是符号 link 吗?

Can rpath value be a symbolic link?

在 makefile 中,我像这样将 rpath 传递给 linker

-Wl,-rpath,/absolute_path_to_folder_with_lib

一切正常,但当我这样做时

-Wl,-rpath,~/symlink

在哪里 ~/symlink -> /absolute_path_to_folder_with_lib 库未加载 rpath 的值可以是符号 link 吗?

Can value of rpath be a symbolic link?

当然可以,但是你误解了你的问题,这不是关于符号 link,而是关于 ~ 扩展。

当您 link 您的二进制文件带有 -Wl,-rpath,~/symlink 时,您最终会得到 RPATH,即 字面意思 ~/symlink。这样的目录(或 symlink)不存在。

当您输入例如ls ~/symlink 到你的 shell,实际发生的是你的 shell 扩展 ~ 到任何 $HOME 设置,然后 readdir 扩展结果。

但是dynamic linker不执行任何这样的扩展,并且字面上寻找./~/symlink,这当然不存在。

那你想要的是:-Wl,-rpath,$HOME/symlink.