erro ao carregar bibliotecas compartilhadas; não é possível abrir o arquivo de objeto compartilhado: nenhum arquivo ou diretório

4

O programa evince reclama que não pode encontrar libfreetype.so.6; no entanto, tenho claramente o arquivo e seu incluído no meu LD_LIBRARY_PATH; Além disso, eu tenho outro programa que usa libfreetype6 e é capaz de rodar muito bem. O que está acontecendo aqui?

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)
    
por glitchyme 22.01.2014 / 19:51

2 respostas

6

Criar um link simbólico para /usr/lib/libfreetype.so.6 deve não ser aplicado se o erro foi lançado por um aplicativo de 32 bits em uma distribuição Linux de 64 bits. A biblioteca pode ser deixada 'quebrada'.

O que você deseja em um sistema de 64 bits é instalar as dependências de 32 bits necessárias em torno do seu aplicativo de 32 bits, para que ele possa detectar e usar o libfreetype.so.6 já existente. Isso difere por aplicativo, mas geralmente faltam estes:

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

E isso pode resolver o problema também:

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

Atenciosamente, Albert Kok

    
por bitmaster2000 05.03.2014 / 11:59
0

Consegui corrigir este problema, mas ainda não sei ao certo por que isso foi um problema.

Depois de executar o strace, vi open("/usr/local/lib/libfreetype.so.6", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied) , o que não faz muito sentido, pois outros programas (sem poderes sudo) que dependiam do libfreetype podiam ser executados e as permissões eram definidas para leitura / gravação para todos, também em execução Evince sob o sudo também não ajudou.

Meu apt-get de libfreetype colocou a biblioteca em /usr/lib/x86_64-linux-gnu/libfreetype.so.6 mas por algum motivo o evince não estava verificando aquela pasta (mesmo que ela tenha sido adicionada a LD_LIBRARY_PATH). No entanto eu criei um link simbólico para uma pasta que ele verifica sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6.10.1 /usr/lib/libfreetype.so.6 e agora evince corre bem.

    
por glitchyme 23.01.2014 / 16:44