gcc中rpath初体验
背景
关于这3个参数的说明,有不少资料,但是看完了还是觉得模糊,分不清它们的区别。本文将用实验的方法去探讨这3个参数的区别。
初体验
设置rpath
gcc -L/foo/lib/location -lfoo -Wl,--rpath='/foo/lib/location' source.c -o binary
查看rpath
readelf -d binary
设置相对路径rpath
gcc -L/foo/lib/location -lfoo -Wl,--rpath='$ORIGIN/../lib' source.c -o binary
在 执行 binary 时,这里的 $ORIGIN 变量会被 linker 替换为 binary 所 在的路径;如果将 binary 和动态库一起移动到别的位置再执行, linker 也能 通过相对位置找到对应的动态库。