biblioteca compartilhada - libvw.so.0 - está faltando

1

tudo, eu instalei o pacote 'vowpal wabbit' e também use 'make test' para testá-lo. Isso mostra que tudo está bem. No entanto, quando eu digito 'vw' no terminal, ele tem os seguintes erros:

vw: error while loading shared libraries: libvw.so.0: cannot open shared object file: No such file or directory

Meu sistema é ubuntu12.04-64bit. Alguém poderia me dizer como resolver esse problema? Obrigado

    
por Qiongjie Tian 11.04.2013 / 19:50

2 respostas

5

Da troca de mensagens, parece que você tem a biblioteca instalada em / usr / local / lib. Mas seu aplicativo não sabe procurar lá pela biblioteca.

Você pode resolver isso de algumas maneiras.

  1. Você pode fornecer sinalizadores especiais ao configurar / construir seu projeto para informar ao seu binário para verificar em / usr / local / lib. Se você souber como definir sinalizadores na compilação, deverá definir LDFLAGS=-Wl,-rpath,/usr/local/lib . Isso faria com que você reconstruísse.

  2. O vinculador de tempo de execução examina uma variável de ambiente chamada LD_LIBRARY_PATH para ver quais diretórios verificar ao procurar por bibliotecas compartilhadas. Nesse caso, se você digitar export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib e, em seguida, executar seu programa, ele deverá funcionar.

  3. Se você tiver vários programas que precisam do diretório / usr / local / lib e achar que é seguro incluir todos, você pode configurar o vinculador de tempo de execução para tentar / usr / local / lib toda vez. Você pode soltar um arquivo em /etc/ld.so.conf.d ou editar /etc/ld.so.conf para adicionar / usr / local / lib. Isso afetaria todos os executáveis do seu sistema, então considero este bastante avançado.

Em suma, você precisa dizer ao seu programa como encontrar a biblioteca. O mais fácil, por enquanto, é definir a variável LD_LIBRARY_PATH com export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

    
por 15.04.2013 / 20:58
0

Atualização: Eu estava configurando "Quagga" do código-fonte. Após a instalação, quando eu corri, eu tenho o erro "não é possível abrir o arquivo de objeto compartilhado: Nenhum arquivo ou diretório". Para o meu caso, foi "libzebra.so.0" faltando.

Eu usei o método "export" como sugerido por Rich no comentário acima.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/foobar/lib

Onde "/ opt / foobar / lib" é a pasta da sua biblioteca compartilhada específica do aplicativo. Para mim, foi "/ usr / local / lib /"

No entanto, isso não resolveu meu problema. Então, para atualizar o cache da biblioteca compartilhada, tive que fazer um ldconfig para reconstruir o cache da biblioteca compartilhada. Eu encontrei a sugestão de Este post do Github , Você também pode ler detalhes de how-to-add-library-directory-toldconfig-cache

    
por 27.07.2017 / 00:40