我正在开发一个在 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
呢?