Apple 有几种查找共享库的方法:
@executable_path
: 相对于主可执行文件
@loader_path
:相对于引用的二进制文件
@rpath
: 相对于任何路径列表。
@rpath
是最新添加的,在 OS X 10.5 中引入。
例如,如果您希望在其中包含可执行文件Contents/MacOS
和库,Contents/Libraries
则可以执行以下操作:
install_name_tool -id @rpath/Libraries/lib_this.dylib builddir/lib_this.dylib
并在顶级可执行文件集中rpath
:
install_name_tool -add_rpath @loader_path/.. myexecutable
和:
install_name_tool -change builddir/lib_this.dylib @rpath/Libraries/lib_this.dylib myexecutable
注意:之后的第一个路径-change
必须与二进制文件中的当前路径完全匹配。
如果你迷路了otool -l -v myexecutable
,会告诉你可执行文件中当前究竟有哪些加载命令。
请参阅man dyld
和man install_name_tool
了解更多信息。