我已经苦苦思索这个概念一段时间了,但我仍然不能真正理解-change
和-id
之间的区别。手册上写着:
-id name
Changes the shared library identification name of a dynamic shared library to name. If the Mach-O binary is not a dynamic
shared library and the -id option is specified it is ignored.
-change old new
Changes the dependent shared library install name old to new in the specified Mach-O binary. More than one of these options
can be specified. If the Mach-O binary does not contain the old install name in a specified -change option the option is
ignored.
到目前为止,我已经尝试了-change
。假设我有以下结构
Test.App
|_Contents
|_MacOS
| |_test -----> item A
|_Library
|_test_library.dylib --->item B
|_another_library.dylib --->item C
现在假设我对itemB运行了以下操作
$ otool -L test_library.dylib
test_library.dylib
/some/path/another_library.dylib -->item D
上述结果表明test_library.dylib
现在依赖于another_library.dylib
,如果我需要更改another_library.dylib
的位置,我会这样做。install_name_tool -change /some/path/another_library.dylib some/new/path/another_library.dylib test_library.dylib
这将改变项目D的位置。我的问题是,install-name_tool -id
是什么,并且我什么时候使用它?
-change
。 - trojanfoe