簡體   English   中英

macOS Mach-O dylib LC_ID_DYLIB名稱或install_name的意義是什么?

[英]What is the significance of a macOS Mach-O dylib LC_ID_DYLIB name, or install_name?

我正在開發一個在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到底是做什么用的呢?

鏈接到dylib的任何客戶端都將LC_ID_DYLIB加載命令中指定的路徑記錄為在運行時查找dylib的路徑。 這很有用,因為dylib在構建時生活的路徑通常不會在運行時找到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM