1

此页面上的链接 ( https://www.ghostscript.com/download.html ) 适用于 Linux x64,为您提供带有可执行二进制文件的 .tgz。

但是,在尝试通过 Ghost4J 将此二进制文件用作 .so 时(在将其重命名libgs.so并放入适当的位置后),我总是收到如下错误:

java.lang.UnsatisfiedLinkError: /tmp/jna-100923095/jna3513656669313044092.tmp: cannot dynamically load executable

一旦我通过安装 Ghostscript apt-get install ghostscript,相同的代码运行良好(因为它现在从 .so 加载/usr/lib/x86_64-linux-gnu/libgs.so.9.22

问题:我应该将哪些最小文件集放在某个文件夹中,以便我可以成功链接到 Ghostscript 动态库 (.so),而无需在机器/容器上安装 Ghostscript?

UPD:在Windows下,这似乎是可能的,/bin安装的文件夹包含DLL和EXE文件;如果我将该 .dll 文件放入 .dll 下的文件win32-x86-64夹中resources,则 JNA (通过 Ghost4j)正在拾取它,并且 Ghostscript 实例工作正常,即使我删除了“官方”安装也是如此)。我也希望 Linux 具有相同的行为(即自给自足、自包含 JAR 文件)。

4

1 回答 1

0

好吧,我最终自己构建了共享对象,使用安装为 WSL 1 发行版的 Ubuntu 18.04,遵循以下指南:https ://www.ghostscript.com/doc/current/Make.htm#Shared_object

这些是确切的命令:

./configure --without-luratech --with-system-libtiff --with-drivers=PCLXL
make so

然后,在sobin文件夹中,您有libgs.so, 按预期工作。但遗憾的是无法从官方网站下载它。

于 2020-07-28T17:33:48.597 回答