从Matlab调用时,由于错误的libfreetype.6.dylib版本,IDL失败

时间:2015-07-31 07:06:33

标签: macos matlab shell unix idl

这是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

1 个答案:

答案 0 :(得分:0)

正如其他帖子中关于类似效果但其他应用程序所述,错误消息具有误导性,因为程序显然从未尝试实际加载/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

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