相对路径之间的差异和使用$ ORIGIN作为RPATH

时间:2014-07-04 11:55:33

标签: 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有什么意义?它是否有一些我错过的附加功能?提前谢谢。

1 个答案:

答案 0 :(得分:5)

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