我正在开发一个在 Xcode 之外开发的 macOS dylib 框架,并且我正在尝试了解该install_name选项的重要性。
例如,我可以使用这样的参数将该LC_ID_DYLIB部分设置name为更类似于您在应用程序包的框架中找到的内容install_name。
clang++ ... -install_name @executable_path/../Frameworks/somelib.framework/Versions/somelib ...
然后otool -l我可以看到我的名字已在二进制文件中设置,与默认值不同(默认情况下与-o选项匹配)。
otool -l somelib
...
cmd LC_ID_DYLIB
cmdsize 96
name @executable_path/../Frameworks/somelib.framework/Versions/A/somelib (offset 24)
time stamp 1 Wed Dec 31 19:00:01 1969
current version 1.0.0
compatibility version 1.0.0
....
所以我了解如何设置它,但我不明白该值究竟用于知道它应该是什么,我也找不到任何关于它的文档。
我可以看到为什么这些LC_LOAD_DYLIB部分需要关于在哪里找到二进制文件的信息(因为这些部分引用了其他二进制文件),但是为什么 dylib 需要关于在哪里找到自己的信息?链接到它的二进制文件应该是找到它的那个?
那么 macOS dylib 究竟是做什么的LC_ID_DYLIB install_name呢?