gs: /MATLAB/ /bin/glnxa64/libtiff.so.5: 没有可用的版本信息(/usr/lib/libgs.so.9 所需)

gs: /MATLAB/ /bin/glnxa64/libtiff.so.5: 没有可用的版本信息(/usr/lib/libgs.so.9 所需)

当我在 Matlab 中使用

!epstopdf "output.eps" --outfile=output.pdf

然后我收到以下消息之一:

gs: /opt/MATLAB/R2016b/bin/glnxa64/libtiff.so.5: no version information available  (required by /usr/lib/libgs.so.9)
gs: /opt/sw/x86_64/generic/Matlab/R2016b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib64/libgs.so.9)
gs: /opt/sw/x86_64/generic/Matlab/R2017b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib64/libgs.so.9)

我正在使用 Ghostscript 9.18(Ubuntu 16.04 的默认版本)。(Ghostscript 9.07 存在同样的问题)

答案1

没有可用的版本信息意味着您有一个旧版本(Ghostscript),请参阅: https://stackoverflow.com/a/156387/6747994

因此您必须更新到 Ghostscript 9.23(或更新版本): https://askubuntu.com/a/942995/676490

你必须

答案2

在我的系统(Linux Mint 21 Vanessa 64 位)上,问题在于系统安装的库 libtiff.so.5 和 libstdc++.so.6 与 Matlab 附带的库不兼容。

系统:

  • /usr/lib/x86_64-linux-gnu/libstdc++.so.6是指向/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30
  • /usr/lib/x86_64-linux-gnu/libtiff.so.5是指向/usr/lib/x86_64-linux-gnu/libtiff.so.5.7.0

随 Matlab 发行版一起提供:

  • R2022b/sys/os/glnxa64/libstdc++.so.6是指向R2022b/sys/os/glnxa64/libstdc++.so.6.0.28
  • R2022b/bin/glnxa64/libtiff.so.5是指向R2022b/bin/glnxa64/libtiff.so.5.8.0

为了解决这个问题,您需要确保 Matlab 库文件夹中的相关符号链接指向系统库文件,而不是 Matlab 附带的文件。即:

  • R2022b/sys/os/glnxa64/libstdc++.so.6必须是指向/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30
  • R2022b/bin/glnxa64/libtiff.so.5必须是指向/usr/lib/x86_64-linux-gnu/libtiff.so.5.7.0

这个问题已经存在很多年了,上面的方法一直有效。对于特定版本的 Matlab 和您的系统,您只需使用适合您系统的 Matlab 文件夹和系统库(在上面的示例中:R2022b 以及 /usr/lib/x86_64-linux-gnu/ 文件夹中的任何版本)。

答案3

当我使用 mex 命令编译 opencv c++ 文件或使用 mex 文件时,我收到类似的错误消息:

MATLAB/bin/glnxa64/libtiff.so.5:未找到版本“LIBTIFF_4.0”(* 所需)

或者

“无效的 MEX 文件‘.mexa64’:libtiff.so.5:未找到版本‘LIBTIFF_4.0’”(/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4 所要求)

我按照下面的方法解决了,请参考。

sudo rm -rf /usr/local/MATLAB/R2017a/bin/glnxa64/libtiff.so.5
sudo ln -s /usr/lib/x86_64-linux-gnu/libtiff.so.5.2.4 /usr/local/MATLAB/R2017a/bin/glnxa64/libtiff.so.5

命令第一行将libtiff.xo.5文件从原路径中移除,第二行命令是链接/usr/lib/x86_64-linux-gnu/libtiff.so.5.2.4/usr/local/MATLAB/R2017a/bin/glnxa64/libtiff.so.5,这样两个文件版本对应起来,问题就解决了。

执行命令locate libtiff.so.5.2.4 您将在/usr/local/MATLAB/R2017a/bin/glnxa64/目录中找到此文件。 /usr/lib/x86_64-linux-gnu/libtiff.so.5.2.4

注意上面的matlab版本路径应该是属于你自己的。

相关内容