gcc - 相对路径与使用 $ORIGIN 作为 RPATH 的区别

标签 gcc

考虑下面的两个命令来构建一个简单的可执行文件

$ gcc -g -Wall -Wl,--enable-new-dtags -Wl,-rpath,'$ORIGIN'/sharedLibDir -o prog main.c ./sharedLibDir/libdemo.so

$ gcc -g -Wall -Wl,--enable-new-dtags -Wl,-rpath,./sharedLibDir -o prog main.c ./sharedLibDir/libdemo.so

很明显,一个使用本地目录作为 RPATH,另一个使用 $ORIGIN。我看不出这两者之间有什么区别(除了二进制文件中 RPATH 和 RUNPATH 的值);两者都允许可执行文件四处移动,并且只要它有一个名为 sharedLibDir 的并行目录,它就会运行。

$ORIGIN 有什么意义?它有一些我错过的附加功能吗?提前致谢。

最佳答案

如果您使用 $ORIGIN,则查找相对于包含可执行文件的目录。如果您指定一个相对目录,它是相对于当前工作目录的,这几乎不是您想要的。

关于gcc - 相对路径与使用 $ORIGIN 作为 RPATH 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24573732/

相关文章:

c++ - 在 C++ 中创建 MakeFile

c - gcc 编译器中是否有用于 pthread 代码的标志以最小化执行时间?

linux - gdb 反向步进 - Linux 不支持?

gcc - Yocto 元工具链 fatal error : stdio. h:没有这样的文件或目录

c++ - 同一命名空间问题中相互依赖的类

c - 告诉 gcc 专门展开一个循环

c++ - c++ 11中结构数组的大括号初始化

c++ - 无法从源代码构建 GCC 10

c - 为什么即使我将.c文件作为参数提供,gcc仍无法识别我的.c文件?

gcc - 使用 -rpath 和 $ORIGIN 链接时查找失败