CMake链接共享库时如何删除默认的/ usr / lib路径?

时间:2018-03-09 22:31:48

标签: c++11 cmake dynamic-linking c++-standard-library

这是otool -L libtarget.dylib

的当前输出

libA.dylib
libB.dylib
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.5.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)

我能够删除libc++.dylib依赖关系,但我无法弄清楚如何移除libSystem.dylib

在链接到CMake中的共享库时,有没有办法删除默认的/usr/lib路径?

1 个答案:

答案 0 :(得分:0)

这将是困难的,即使是最简单的C示例链接到libSystem.B例如,如果你执行

echo "int main() { return 0; }" | gcc -xc -

接着是

otool -L a.out 

它会显示您对libSystem.B

的依赖
a.out:
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)

另一种方法是使用rpath

install_name_tool -change /usr/lib/libSystem.B.dylib @rpath/libSystem.B.dylib a.out