【问题标题】:dyld: Library not loaded: /usr/local/lib/libmpfr.4.dylibdyld:库未加载:/usr/local/lib/libmpfr.4.dylib
【发布时间】:2018-09-02 14:37:30
【问题描述】:

当我在一个项目上运行“make”时,我得到了这个错误:

dyld: Library not loaded: /usr/local/lib/libmpfr.4.dylib 
Referenced from: /Users/Petrov/Downloads/mips/bin/../libexec/gcc/mipsel-elf/4.8.1/cc1
  Reason: image not found

/usr/local/lib 中没有libmpfr.4.dylib 文件,但有libmpfr.6.dylib。我安装了 mpfr 4.0.1。我已经尝试过重新安装 Xcode 和 mpfr。

【问题讨论】:

  • 你解决了这个问题吗?我也有同样的问题
  • 抱歉我还没修好
  • 我已经解决了这个问题,将 libmpfr.dylib 符号链接到 libmpfr.4.dylib 它对我有用,但我不知道未来的问题
  • 那行得通。谢谢!

标签: xcode macos gcc dylib mpfr


【解决方案1】:

使用系统工具链编译:

export PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH.

【讨论】:

    【解决方案2】:

    @Vinc17 在他对@neosarchizo 提出的解决方案的评论中是正确的,如果引用不同的版本,符号链接可能会出现问题,但是,在我的例子中,运行以下命令:

    locate libmpfr.4.dylib

    表明我确实在不同的目录中有正确的库:

    /opt/local/lib/libmpfr.4.dylib

    所以对我来说,我觉得使用符号链接方法是非常安全的,即:

    sudo ln -s /opt/local/lib/libmpfr.4.dylib /usr/local/lib/libmpfr.4.dylib

    可能是 hack,但问题解决了。

    【讨论】:

      【解决方案3】:

      我在 Mac 中遇到过类似的问题。我通过使用 brew 升级“gawk”来修复它

      brew upgrade gawk
      

      【讨论】:

      • 这对我有用,同时在使用 make_standalone_toolchain.sh 生成 Android 工具链时遇到问题。
      • 它也对我有用。如果您还没有安装 gawk,只需执行“brew install gawk”即可。
      • 不幸的是,仅仅这样做并没有为我做这件事。如果我了解更多信息,会回来报告。
      • 有更新吗?我尝试升级 gawk 无济于事。宁愿不使用符号链接解决。
      【解决方案4】:

      我是这样解决的。

      ln -s /usr/local/opt/mpfr/lib/libmpfr.6.dylib /usr/local/opt/mpfr/lib/libmpfr.4.dylib
      

      【讨论】:

      • 不推荐使用此符号链接:这可能会导致失败(崩溃或不正确的结果),因为 MPFR 4.0.x 的 ABI 与以前的 MPFR 版本不兼容(这就是库版本号的原因已从 4 更改为 6)。现在,AFAIK,不兼容性很小,大多数应用程序可能不受影响,但我不确定。
      • 由于@vinc17 提到的原因,这完全不正确。在 OSX 上,libmpfr.4.dylib 对应于“mpfr-3.x”版本,而libmpfr.6.dylib 对应于“mpfr-4.x”版本。 MAJOR 版本的更改必须被视为二进制不兼容。如果它“奏效”了,那你就很幸运了。
      【解决方案5】:

      错误的原因是您已从 MPFR 3.1.x 升级到 MPFR 4.0.x,它与 MPFR 3.1.x 的 ABI 不兼容(MPFR 4.0.x 库不能与针对 MPFR 编译的程序一起使用) 3.1.x)。因此从 libmpfr.4.dylib(用于 MPFR 3.0.x 和 MPFR 3.1.x)更改为 libmpfr.6.dylib(至少用于 MPFR 4.0.x)。

      为了避免错误,您应该做的是安装 MPFR 4.0.x,而不从 MPFR 3.1.x 卸载 libmpfr.4.dylib:所有新编译的软件都将使用 MPFR 4.0.x 和 libmpfr。 6.dylib,但依赖于 MPFR 的旧二进制文件仍然能够通过使用 libmpfr.4.dylib 运行(一个可能的例外是当 MPFR 有两个不同的依赖项时,通过库,其中 libmpfr.4.dylib 和 libmpfr .6.dylib 可能需要,在这种情况下这可能不起作用)。

      现在,您应该重新编译 Xcode。如果您获得了已编译的 Xcode(从二进制包中),请确保您获得了针对 MPFR 4.0.x 编译的一个或包含 libmpfr.4.dylib 文件的一个。如果这不可行,您应该重新安装 MPFR 3.1.x。那么您应该能够安装 MPFR 4.0.x 而无需删除 libmpfr.4.dylib,如上所述。

      【讨论】:

        猜你喜欢
        • 2013-10-13
        • 2021-05-25
        • 1970-01-01
        • 2021-07-14
        • 2020-04-19
        • 2020-03-19
        • 2018-11-11
        • 2014-12-20
        相关资源
        最近更新 更多