ошибка при загрузке общих библиотек; невозможно открыть общий объектный файл: нет такого файла или каталога

Программа evince жалуется, что не может найти libfreetype.so.6; однако у меня явно есть файл, и он включен в мою LD_LIBRARY_PATH; кроме того, у меня есть другая программа, которая использует libfreetype6 и может работать очень хорошо. Что здесь происходит?

jbud@jb-pc ~> evince
evince: error while loading shared libraries: libfreetype.so.6: cannot open shared object file: No such file or directory

jbud@jb-pc ~> ldd /usr/bin/evince | grep freetype
libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x00007f912179d000)

jbud@jb-pc ~> file /usr/local/lib/libfreetype.so.6
/usr/local/lib/libfreetype.so.6: symbolic link to `libfreetype.so.6.11.1'

jbud@jb-pc ~> file /usr/local/lib/libfreetype.so.6.11.1
/usr/local/lib/libfreetype.so.6.11.1: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x21a4b8005e0c9a42af001b35fb984f4e25efc71c, not stripped

jbud@jb-pc ~> echo $LD_LIBRARY_PATH
/usr/lib/:/usr/lib64/:/usr/lib/x86_64-linux-gnu/:/usr/local/lib/

jbud@jb-pc ~> ldd jdrive/jstuff/work/personal/noengine/client | grep freetype
libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x00007feb5ac89000)
6
задан 22 January 2014 в 22:51

2 ответа

Создание символической ссылки на /usr/lib/libfreetype.so.6 не следует применять , если возникла ошибка 32-разрядного приложения в 64-разрядном дистрибутиве Linux. Библиотеку можно оставить «сломанной».

В 64-битной системе вы хотите установить необходимые 32-битные зависимости вокруг 32-битного приложения, чтобы оно могло обнаруживать и использовать уже существующее libfreetype.so.6. Это отличается в зависимости от приложения, но обычно отсутствует:

sudo apt-get install libgtk2.0-0:i386 libidn11:i386 libglu1-mesa:i386

И это, возможно, также может решить проблему:

sudo apt-get install libpangox-1.0-0:i386 libpangoxft-1.0-0:i386

С уважением, Альберт Кок

0
ответ дан 22 January 2014 в 22:51

Мне удалось решить эту проблему, однако я все еще не совсем уверен, почему это была проблема в первую очередь.

После запуска strace я увидел open("/usr/local/lib/libfreetype.so.6", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied), что не совсем имеет смысла, так как другие программы (без полномочий sudo), которые зависели от libfreetype, могли запускаться, и разрешения для чтения / записи установлены для всех, также работающих Evince под sudo тоже не помог.

Мой apt-get из libfreetype поместил библиотеку в /usr/lib/x86_64-linux-gnu/libfreetype.so.6, но по какой-то причине даже не проверял эту папку (хотя она была добавлена ​​в LD_LIBRARY_PATH). Однако я создал символическую ссылку на папку, которую он проверяет sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6.10.1 /usr/lib/libfreetype.so.6, и теперь все работает нормально.

0
ответ дан 22 January 2014 в 22:51

Другие вопросы по тегам:

Похожие вопросы: