OSX修改动态库dylib加载路径

OSX环境下修改动态库dylib默认加载路径的方法。

最近遇到的一个问题,在Xcode里配置好了链接的库以及动态库的Search path,但运行时仍会报错,是去了另外一个地方去加载库了,错误格式如下:

1
2
3
dyld: Library not loaded: /usr/local/Cellar/libxxx/xxx.dylib
Referenced from: xxxxx
Reason: image not found

在dylib中有一个默认的加载路径,可以通过以下方法来查看:

1
otool -L xxx.dylib

可以通过以下方法来修改,如将xxx.dylib默认加载路径改为/usr/local/lib/xxx/xxx.dylib

1
install_name_tool -id /usr/local/lib/xxx/xxx.dylib xxx.dylib

此时再查看默认加载路径即是新设置的路径,并且在Xcode中也可以正确加载了。