V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MasterCai
V2EX  ›  macOS

如何解决: dyld: Library not loaded: @rpath/libpython3.9.dylib

  •  
  •   MasterCai · 2021-08-04 12:08:55 +08:00 · 2611 次点击
    这是一个创建于 1211 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在运行一个 C++可执行文件的时候遇到如下报错:

      Referenced from: /usr/local/lib/libpangolin.dylib
      Reason: image not found
    

    网上查了一堆和"@rpath"相关的资料,但是还是没太明白应该怎么修改😅 看了一下 libpython3.9.dylib 是有的,python 是用 miniforge3 安装的,使用系统为 macos big sur 11.4,以前在 10.15 的系统上运行同样的程序完全没有问题,有没有人遇到过这种问题?如何解决?

    第 1 条附言  ·  2021-08-04 14:34:42 +08:00

    报错信息少了一行🥲

    dyld: Library not loaded: @rpath/libpython3.9.dylib
    Referenced from: /usr/local/lib/libpangolin.dylib
    Reason: image not found
    
    第 2 条附言  ·  2021-08-05 08:47:07 +08:00

    问题最后解决了,解决方法是我乱猜“@RPATH”解决的😅把libpython3.9.dylib方法和libpangolin.dylib同级的/usr/local/lib目录下解决了问题,解决问题的过程中也了解到了很多新的东西,MachOView这个原项目早就不维护了,贴上一个M1版本可以用MachOView: https://github.com/obaby/machoview-obaby-branch

    13 条回复    2021-08-05 09:20:42 +08:00
    MasterCai
        1
    MasterCai  
    OP
       2021-08-04 12:11:41 +08:00
    网上部分解决方案是用 xcode 解决的,我没有 Xcode,有没有别的方式可以解决
    ai277014717
        2
    ai277014717  
       2021-08-04 13:27:26 +08:00
    把动态库放到对应路径中即可。
    也可以看看 DYLD_FALLBACK_LIBRARY_PATH 能不能解决
    Liang
        3
    Liang  
       2021-08-04 14:16:55 +08:00
    m1 mac mini,安装扩展的时候报了类似的错,搞了两天,没搞好,重装了
    MasterCai
        4
    MasterCai  
    OP
       2021-08-04 14:36:08 +08:00
    @ai277014717 这个动态库是 @rpath 开头的,就是不知道具体的位置在哪呀,DYLD_FALLBACK_LIBRARY_PATH 这个是什么意思呢?
    @Liang 是系统重装了吗?最后解决了吗?
    ai277014717
        5
    ai277014717  
       2021-08-04 14:42:45 +08:00
    @MasterCai 使用 otool 可以查看 rpath 的值。DYLD_FALLBACK_LIBRARY_PATH 可以在查找动态库的时候添加一些兜底的目录。
    MasterCai
        6
    MasterCai  
    OP
       2021-08-04 15:45:29 +08:00
    修改 DYLD_FALLBACK_LIBRARY_PATH 这个方法在 terminal 里成功了,但是在 clion 里还是不行,
    我用```otool -l /usr/local/lib/libpangolin.dylib```命令查看了一下,也没有找到什么有用的信息,还是没能查看到“@rpath”的信息,唯一相关的片段如图![]( https://raw.githubusercontent.com/mastercaiOSS/OSS/master/blog/2021/08-04-sEY1Ou.png),麻烦能不能说具体一点🙏,
    MasterCai
        7
    MasterCai  
    OP
       2021-08-04 15:46:35 +08:00
    ai277014717
        8
    ai277014717  
       2021-08-04 16:48:54 +08:00
    @MasterCai 搜下 LC_RPATH 就是 rpath 的值
    MasterCai
        9
    MasterCai  
    OP
       2021-08-04 17:21:11 +08:00
    执行```otool -l /usr/local/lib/libpangolin.dylib```之后搜了一下,里面并没有 LC_RPATH 这个值😢😢
    ai277014717
        10
    ai277014717  
       2021-08-04 19:19:25 +08:00
    @MasterCai 多研究下吧。可能哪里搞错了。MachOView 也可以查看 rpath 效果和 otool 应该一样
    discrete
        11
    discrete  
       2021-08-05 03:14:51 +08:00
    重装一下 Command Line Tools 试试
    shawnsh
        12
    shawnsh  
       2021-08-05 09:18:36 +08:00 via Android
    otool -l 文件,看下 rpath 路径,然后用 otool -L 文件,看依赖的库,默认应该是 framework 那个目录
    MasterCai
        13
    MasterCai  
    OP
       2021-08-05 09:20:42 +08:00
    @shawnsh 我用 otool -l 和 MachOView 都没看到“LC_RPATH”相关的字段,很奇怪,所以就不知道 rpath 具体是哪个路径
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3129 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 600ms · UTC 13:47 · PVG 21:47 · LAX 05:47 · JFK 08:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.