2013-07-15 2 views
1

Я установил ghostscript из 64 бит на мою 64-битную Linux-машину. Я использую ghost4j-0.5.0.jar для преобразования файлов PDF в файлы tiff. Я написал программу java, которая преобразует файлы PDF в файлы tiff. Это отлично работает на Windows, но когда я думал о переносе этого на Linux-машину, я получаю следующую ошибку.Невозможно загрузить библиотеку 'gs': libgs.so: не удается открыть файл общих объектов: Нет такого файла или каталога

«Исключение в потоке„главный“java.lang.UnsatisfiedLinkError: Не удалось загрузить библиотеку„GS“: libgs.so: не удается открыть общий объектный файл: Нет такого файла или каталога»

Я проверил Lib папку и не удалось найти файл libgs.so в папке lib. Я не уверен, где взять этот файл.

Может ли кто-нибудь помочь мне в этом?

+1

Он должен быть в пакете разработки ghostscript. Точное имя пакета зависит от вашего дистрибутива Linux. libgs-dev на дебианских производных, ghostscript-devel на Fedora и, возможно, что-то еще на других – kiheru

ответ

1

У меня была эта проблема на виртуальной машине Linux. Я смог его решить, установив ghostscript в систему. Я только что воспользовался этой командой:

sudo yum install ghostscript 

Надеюсь, что это поможет!

4

Я чувствую себя немного виноватым, размещая это здесь, так как он, вероятно, лучше обслуживается на ServerFault или одной из плат Linux, и вопрос длится более 6 месяцев, но я весь день стучал головой о стену и, наконец, нашел решение этой проблемы, и я полагал, что кто-то другой может извлечь выгоду из этого в будущем.

системы: Windows 7 и CentOS 6.5

Использование: Ghostscript 9.14

Немного предыстории:

Как OP я был запуск программы Ghostscript на Windows, чтобы конвертировать PDF-файлы в серии изображений , Это работало нормально, пока мне не пришлось переключиться на Linux и запустить программу, и около 5% PDF-файлов, которые мне нужны для конвертирования, придумали error cannot decode code stream. Я понял, что использовал более новую версию ghostscript в Windows. (9.14 на Windows по сравнению с 8,70 на CentOS из-за установки через yum).

Я удалил старую версию с yum remove ghostscript. Затем я нашел самый простой способ установки новейшей версии Ghostscript - загрузить с here и скомпилировать. Поскольку я удалил предыдущую версию ghostscript с помощью yum, мне пришлось обновить ссылку в usr/bin, чтобы указать на usr/local/bin/gs с ln -s /usr/local/bin/gs /usr/bin/gs. Со всем на месте, так что я подумал, я попытался запустить свою программу, а затем bam, error!

Решение проблемы:

Так что теперь я получаю сообщение об ошибке:

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

я наткнулся на пост here, который сказал, чтобы получить необходимую libgs.so мне нужно вернуться назад и перестройте источник как общую библиотеку с помощью команды make so. Я сделал это, а затем взял файл libgs.so.9.14 под каталогом sobin в папке ghostscript и скопировал его в /usr/lib.В этом каталоге я сделал символическую ссылку на libgs.so, используя команду ln -s /usr/lib/libgs.so.9.14 /usr/lib/libgs.so.

Как только это было сделано, мне нужно было обновить мой ld_library_path, но было обнаружено, когда я сделал это, это изменение не было глобальным, поэтому я нашел Unix & Linux post о том, как установить глобальный путь lib. В основном для этого вам нужно добавить файл .conf в /etc/ld.so.conf.d/ с указанием пути к файлу. Я сделал это с помощью vi /etc/ld.so.conf.d/libgs.conf и добавил /usr/lib/libgs.so к файлу. И наконец я побежал ldconfig, чтобы сохранить изменения.

TLDR:

  1. Download последняя версия Ghostscript от источника: wget http://downloads.ghostscript.com/public/ghostscript-9.14.tar.gz

  2. Распакуйте дегтя: 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. Если вы удалили предыдущую версию с ням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.so и сохранить ЭКУ, :, wq.

  13. ldconfig и сделано.

  14. Запустите программу конверсии.

Надеюсь, это помогло и не было слишком запутанным. Я не эксперт по Linux (пока), поэтому я могу выполнять немного больше работы, чем необходимо, с помощью приведенных выше команд, но я хотел быть основательным.