我正在開發一個在Xcode之外開發的macOS dylib框架,我試圖瞭解install_name
選項的意義。macOS Mach-O dylib LC_ID_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
做什麼?
我想我明白你的意思了。是否有道理說:「這是將被複制到鏈接到它的二進制文件的路徑」? –
是的,這是準確的。 – bdash