我想使用matlab的export_fig包。有一点这很有用,但现在已经坏了。错误发生在这里:
>> system('pdftops -h')
dyld: Library not loaded: /opt/local/lib/libtiff.5.dylib
Referenced from: /opt/local/bin/pdftops
Reason: Incompatible library version: pdftops requires version 8.0.0 or later, but libtiff.5.dylib provides version 6.0.0
pdftops -h: Trace/breakpoint trap
但是当我从我自己的bash终端呼叫pdftops
时,一切正常。我想这一定是因为Matlab有一些不好的库路径或什么东西,但我不知道从哪里去?
matlab使用的一些相关环境变量:
>> system('env')
SHELL=/bin/bash
OSG_LD_LIBRARY_PATH=/Applications/MATLAB_R2013b.app/sys/openscenegraph/lib/maci64
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/texbin
__CHECKFIX1436934=1
XFILESEARCHPATH=/Applications/MATLAB_R2013b.app/sys/java/jre/maci64/jre/lib/locale/%L/%T/%N%S:
DYLD_FRAMEWORK_PATH=/Applications/MATLAB_R2013b.app/sys/os/maci64:/Applications/MATLAB_R2013b.app/bin/maci64/../../Contents/MacOS:/Applications/MATLAB_R2013b.app/bin/maci64:/Applications/MATLAB_R2013b.app/extern/lib/maci64:/Applications/MATLAB_R2013b.app/sys/java/jre/maci64/jre/lib/./native_threads:/Applications/MATLAB_R2013b.app/sys/java/jre/maci64/jre/lib/./server:/Applications/MATLAB_R2013b.app/sys/java/jre/maci64/jre/lib/./lib/jli
SHLVL=1
__KMP_REGISTERED_LIB_33586=0x124404710-cafeb339-libiomp5.dylib
DYLD_LIBRARY_PATH=/Applications/MATLAB_R2013b.app/sys/os/maci64:/Applications/MATLAB_R2013b.app/bin/maci64/../../Contents/MacOS:/Applications/MATLAB_R2013b.app/bin/maci64:/Applications/MATLAB_R2013b.app/extern/lib/maci64:/Applications/MATLAB_R2013b.app/sys/java/jre/maci64/jre/lib/./native_threads:/Applications/MATLAB_R2013b.app/sys/java/jre/maci64/jre/lib/./server:/Applications/MATLAB_R2013b.app/sys/java/jre/maci64/jre/lib/./lib/jli
答案 0 :(得分:1)
如果您查看错误消息,MATLAB使用libtiff
来呼叫pdftops
,但只有版本6.0.0
。它说它需要版本8.0.0
或更高版本。有一种情况发生在StackOverflow之前。有人试图安装mexopencv
并遇到了您所说的相同错误:Compiling mexopencv in OS X 10.9 with Xcode 5 and Matlab R2013b
虽然这与您正在做的事情无关,但他们遇到了您所说的libtiff
错误。他们提供了两种解决方案来解决这个错误:
进入MATLAB的根目录,然后转到bin/os
目录,其中os
是您正在使用的操作系统的目录(在我的例子中,它是maci64
)。要进入根目录,请在命令提示符中执行以下操作:cd/(matlabroot)
。进入此处后,找到libtiff.5.dylib
文件并将其重命名为libtiff.5.dylib.bak
,以便使用的libtiff
库是系统默认的库而不是MATLAB在程序内部使用。
强制MATLAB指向作为系统一部分的库,而不是使用MATLAB内置的库。因此,在MATLAB的命令提示符下,运行以下命令:
setenv('DYLD_INSERT_LIBRARIES','/opt/local/lib/libtiff.5.dylib');
执行此操作后,您可能会遇到与其他库类似的更多错误。因此,您需要继续将这些库附加到setenv
的第二个参数中并对其进行冒号分隔,直到您解决问题为止。您需要确保指向系统上的那些而不是使用MATLAB安装的系统。在你的情况下,你必须这样做:
setenv('DYLD_INSERT_LIBRARIES', ...
'/opt/local/lib/libtiff.5.dylib:/opt/local/lib/libcurl.4.dylib');
很高兴这有帮助!