工程配置中,有三個路徑和庫的加載息息相關:
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
