【问题标题】:Calling pdftops does not work in Matlab调用 pdftops 在 Matlab 中不起作用
【发布时间】:2014-08-03 15:04:20
【问题描述】:

我想为 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

【问题讨论】:

  • 如果你看一下错误信息,MATLAB 使用libtiff调用pdftops,但只有版本6.0.0。它说它需要版本8.0.0 或更高版本。看看这篇文章,然后滚动到底部。虽然这篇文章专门用于安装其他东西,但它告诉您如何解决libtiff 错误:stackoverflow.com/questions/19773916/…
  • 谢谢,有帮助。我的解决方案是在 matlab 中运行以下命令:setenv('DYLD_INSERT_LIBRARIES','/opt/local/lib/libtiff.5.dylib:/opt/local/lib/libcurl.4.dylib')
  • 酷!如果我写一个答案,你能接受吗?
  • 谢谢 :) 我刚刚写了一个答案。

标签: matlab environment-variables


【解决方案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 错误。他们提供了两种解决方案来解决这个错误:

  1. 进入 MATLAB 的根目录,然后进入bin/os 目录,其中os 是您正在使用的操作系统的目录(在我的例子中,它是maci64)。要进入根目录,请在命令提示符下执行以下操作:cd/(matlabroot)。到达此处后,找到 libtiff.5.dylib 文件并将其重命名为 libtiff.5.dylib.bak 之类的名称,以便使用的 libtiff 库是您系统的默认库,而不是 MATLAB 在程序内部使用的库.

  2. 强制 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/l‌​ibcurl.4.dylib');

很高兴这有帮助!

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多