繁体   English   中英

无法加载库“ gs”:libgs.so:无法打开共享对象文件:无此文件或目录

[英]Unable to load library 'gs': libgs.so: cannot open shared object file: No such file or directory

我已经在64位linux机器上安装了64位的ghostscript。 我正在使用ghost4j-0.5.0.jar将pdf文件转换为tiff文件。 我写了一个Java程序,它将pdf文件转换为tiff文件。 这在Windows上运行正常,但是当我想到将其移至linux计算机时,出现以下错误。

“线程“主”中的异常java.lang.UnsatisfiedLinkError:无法加载库'gs':libgs.so:无法打开共享对象文件:没有这样的文件或目录”

我检查了lib文件夹,但在lib文件夹中找不到libgs.so文件。 我不确定从哪里获取该文件。

有人可以帮我吗?

我觉得有点内this,因为它可能最好在ServerFault或Linux板上之一上使用,并且这个问题已经存在了6个月以上,但是我整天都在碰壁,终于找到了解决方案问题,我想其他人可能会从中受益。

系统: Windows 7CentOS 6.5

使用: Ghostscript 9.14

一些背景故事:

像OP一样,我一直在Windows上运行ghostscript程序,以将PDF转换为一系列图像。 直到我需要切换到Linux并运行程序,并且我需要转换的大约5%的PDF出现error cannot decode code stream时,此方法error cannot decode code stream 我意识到我在Windows上使用的是更新版本的ghostscript。 (由于通过yum安装,Windows上为9.14,而CentOS上为8.70)。

我用yum remove ghostscript删除了旧版本。 接下来,我发现从此处下载并编译即可安装最新版本的Ghostscript的最简单方法。 自从我用yum删除了上一个版本的ghostscript以来,我不得不用ln -s /usr/local/bin/gs /usr/bin/gs更新usr/bin的链接以指向usr/local/bin/gs ln -s /usr/local/bin/gs /usr/bin/gs 一切就绪后,我想,我试图运行程序,然后运行,出错!

解决问题:

所以现在我得到了错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'gs': libgs.so: cannot open shared object file: No such file or directory

我在这里遇到了一篇文章,说要获得必要的libgs.so所以我需要回过头来,使用make so命令将源重建为共享库。 我这样做,然后我把libgs.so.9.14文件下sobin目录中的文件夹的Ghostscript和其复制到/usr/lib 在该目录下,我使用ln -s /usr/lib/libgs.so.9.14 /usr/lib/libgs.so命令建立了指向libgs.so的符号链接。

完成此操作后,我需要更新ld_library_path但发现这样做时更改不是全局的,因此我找到了有关如何设置全局lib路径的Unix&Linux帖子 基本上,您需要在/etc/ld.so.conf.d/添加一个.conf文件以及该文件的路径。 我使用vi /etc/ld.so.conf.d/libgs.conf做到了,并将/usr/lib/libgs.so添加到文件中。 最后,我运行了ldconfig所以保存更改。

TLDR:

  1. 从源代码下载最新版本的Ghostscript: wget http://downloads.ghostscript.com/public/ghostscript-9.14.tar.gz

  2. 解压缩tar: tar -xzf ghostscript-9.14.tar.gz

  3. cd ghostscript-9.14

  4. ./configure

  5. make <-您可能可以跳过并执行make so我按此顺序进行了操作,因此我将其保留为这样。

  6. make install

  7. make so

  8. 如果使用yum ln -s /usr/local/bin/gs /usr/bin/gs 删除了先前版本

  9. cp ghostscript-9.14/sobin/libgs.so.9.14 /usr/lib

  10. ln -s /usr/lib/libgs.so.9.14 /usr/lib/libgs.so

  11. vi /etc/ld.so.conf.d/libgs.conf

  12. 在新的libgs.conf文件: /usr/lib/libgs.soESC保存,:, wq

  13. ldconfig完成。

  14. 运行您的转换程序。

希望这会有所帮助,并且不会造成混乱。 我还不是Linux专家,因此使用上述命令可能会做一些不必要的工作,但我想更加详尽。

我刚在Linux VM上遇到这个问题。 我可以通过在系统上安装ghostscript来解决它。 我只是使用了命令:

sudo yum install ghostscript

希望有帮助!

make soinstall将创建必需的库以及可执行文件,如https://www.ghostscript.com/doc/current/Install.htm#Shared_object中所述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM