zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    6-1面向对象
    5-1模块
    python随机数
    4-5目录
    4-4内置函数
    4-3迭代器和生成器
    4-1装饰器1
    4-2装饰器2
    3-4函数-全局变量
    3-5递归-函数
  • 原文地址:https://www.cnblogs.com/yangwenhuan/p/10028673.html
Copyright © 2011-2022 走看看