【问题标题】:IDL fails due to wrong libfreetype.6.dylib version on MacOS when called from Matlab从 Matlab 调用时,由于 MacOS 上的 libfreetype.6.dylib 版本错误,IDL 失败
【发布时间】:2015-07-31 07:06:33
【问题描述】:

这是另一个有趣的 libfreetype.6.dylib 版本不兼容的版本。想通了,我觉得值得记录... 设置如下: macOS 10.9.5 IDL 8.3 Matlab 2013b

Matlab 用于动态创建一个 shell 脚本,该脚本又会调用一个 IDL .sav 文件。然后通过 Matlab 中的 unix() 命令调用 shell 脚本。

从 shell 运行生成的 shell 脚本时,一切正常。尝试通过 unix() 命令从 Matlab 运行它时,出现 libfreetype.6.dylib 版本问题:

dyld:库未加载:/opt/X11/lib/libfreetype.6.dylib 库版本不兼容:libidl.8.3.dylib 需要 15.0.0 或更高版本,但 libfreetype.6.dylib 提供 10.0.0 版本

【问题讨论】:

    标签: macos matlab shell unix idl


    【解决方案1】:

    正如其他关于类似效果的帖子中所述,但对于其他应用程序,错误消息具有误导性,因为该程序显然从未尝试实际加载 /opt/X11/lib/libfreetype.6.dylib

    可以通过otool查看/opt/X11/lib/libfreetype.6.dylib的版本:

    otool -L libfreetype.6.dyliblibfreetype.6.dylib:
    
    /opt/X11/lib/libfreetype.6.dylib (compatibility version 18.0.0, current version 18.2.0)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
    /usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
    

    显然X11提供的版本比IDL要求的要高。

    要解决这个问题,只需将 /opt/X11/lib/libfreetype.6.dylib 复制到 /Applications/exelis/idl83/bin/bin.darwin.x86_64

    注意:IDL 应用程序文件层次结构中根本不存在 libfreetype.6.dylib,因此,可能与 X11 提供的库版本的某些链接肯定出错了……修复这可能是一个更清洁的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      相关资源
      最近更新 更多