Objective-C @executable_path、@loader_path和@rpath


工程配置中,有三個路徑和庫的加載息息相關:

1、@executable_path

可執行文件的路徑,例如/Applications/WeChat.app/Contents/MacOS。

 

2、@loader_path

被加載的二進制的路徑,若該二進制是可執行文件,則@loader_path等價於@executable_path。

適用於非可執行二進制嵌套的場景,例如frameworkA包含frameworkB,frameworkB的加載路徑就可以根據frameworkA的@loader_path給出。

 

3、@rpath

即run path,對應於工程配置中的Runpath Search Paths。是一個或者多個路徑的列表,類似於環境變量$PATH。 

 

當庫的加載路徑出錯時,就會報如下錯誤:

dyld: Library not loaded

這時可以利用otool工具查看二進制依賴的庫,例如Mac微信: 

otool -L /Applications/WeChat.app/Contents/MacOS/WeChat  

然后使用install_name_tool工具來修正錯誤路徑即可。

 

參考鏈接:

https://wincent.com/wiki/%40executable_path%2C_%40load_path_and_%40rpath


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM