在运行一个 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 的系统上运行同样的程序完全没有问题,有没有人遇到过这种问题?如何解决?
报错信息少了一行🥲
dyld: Library not loaded: @rpath/libpython3.9.dylib
Referenced from: /usr/local/lib/libpangolin.dylib
Reason: image not found
问题最后解决了,解决方法是我乱猜“@RPATH”解决的😅把libpython3.9.dylib方法和libpangolin.dylib同级的/usr/local/lib目录下解决了问题,解决问题的过程中也了解到了很多新的东西,MachOView这个原项目早就不维护了,贴上一个M1版本可以用MachOView: https://github.com/obaby/machoview-obaby-branch
1
MasterCai OP 网上部分解决方案是用 xcode 解决的,我没有 Xcode,有没有别的方式可以解决
|
2
ai277014717 2021-08-04 13:27:26 +08:00
把动态库放到对应路径中即可。
也可以看看 DYLD_FALLBACK_LIBRARY_PATH 能不能解决 |
3
Liang 2021-08-04 14:16:55 +08:00
m1 mac mini,安装扩展的时候报了类似的错,搞了两天,没搞好,重装了
|
4
MasterCai OP @ai277014717 这个动态库是 @rpath 开头的,就是不知道具体的位置在哪呀,DYLD_FALLBACK_LIBRARY_PATH 这个是什么意思呢?
@Liang 是系统重装了吗?最后解决了吗? |
5
ai277014717 2021-08-04 14:42:45 +08:00
@MasterCai 使用 otool 可以查看 rpath 的值。DYLD_FALLBACK_LIBRARY_PATH 可以在查找动态库的时候添加一些兜底的目录。
|
6
MasterCai OP 修改 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),麻烦能不能说具体一点🙏, |
7
MasterCai OP |
8
ai277014717 2021-08-04 16:48:54 +08:00
@MasterCai 搜下 LC_RPATH 就是 rpath 的值
|
9
MasterCai OP 执行```otool -l /usr/local/lib/libpangolin.dylib```之后搜了一下,里面并没有 LC_RPATH 这个值😢😢
|
10
ai277014717 2021-08-04 19:19:25 +08:00
@MasterCai 多研究下吧。可能哪里搞错了。MachOView 也可以查看 rpath 效果和 otool 应该一样
|
11
discrete 2021-08-05 03:14:51 +08:00
重装一下 Command Line Tools 试试
|
12
shawnsh 2021-08-05 09:18:36 +08:00 via Android
otool -l 文件,看下 rpath 路径,然后用 otool -L 文件,看依赖的库,默认应该是 framework 那个目录
|