Ale*_*lex 36 macos mach-o otool install-name-tool
我正在使用最新版本的Xcode 4开发Cocoa应用程序,我想将动态库链接到我的项目(dylibs
).
我读的地方,在我的项目库添加是不够的,因为我有运行install_name_tool
,并otool
让我的项目中使用我的项目被捆绑的库.
我已经阅读了手册页install_name_tool
,但我不明白为什么我必须这样做.
图书馆如何运作?特别感兴趣的是应用程序和库具有指向我机器中特定位置的路径的部分,例如/usr/local/lib/mylibrary.dylib
运行时otool -L
Wil*_*eld 61
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
Run Code Online (Sandbox Code Playgroud)
并在顶级可执行文件集中rpath
:
install_name_tool -add_rpath @loader_path/.. myexecutable
Run Code Online (Sandbox Code Playgroud)
和:
install_name_tool -change builddir/lib_this.dylib @rpath/Libraries/lib_this.dylib myexecutable
Run Code Online (Sandbox Code Playgroud)
注意:后面的第一个路径-change
必须与二进制文件中当前的路径完全匹配.
如果您迷路了,otool -l -v myexecutable
将告诉您当前在可执行文件中的加载命令.
请参阅man dyld
和man install_name_tool
了解更多信息.
归档时间: |
|
查看次数: |
23881 次 |
最近记录: |