Problema ao vincular a bibliotecas compartilhadas

1

Eu tenho um problema de vinculação a bibliotecas compartilhadas. Especificamente, esse é um módulo de nodejs vinculado ao libmemcached, mas acredito que o problema seja mais genérico do que isso. O arquivo não encontrado / aberto está presente e tudo está operando em / usr / local. Rodando como root não deixa ver o arquivo.

Estou executando o CentOS 5.4

[node-memcache]$ node tests/test.js
Error: libmemcached.so.4: cannot open shared object file: No such file
or directory
[...]

[node-memcache]$ sudo find /usr -name "libmemcached.so.4"
/usr/local/lib/libmemcached.so.4 
    
por user27422 10.03.2010 / 02:36

2 respostas

3

O TLDP tem uma boa descrição das bibliotecas compartilhadas , discutindo sobre como criá-los e como usá-los.

Seu problema, no entanto, é provável porque seu ambiente de execução não sabe onde encontrar o libmemcached. O caminho de pesquisa é armazenado na variável de ambiente LD_LIBRARY_PATH. Tente executar este comando antes de executar o nó:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

Se isso funcionar, adicione-o ao seu perfil para que a variável seja definida toda vez que você iniciar uma nova sessão de shell.

    
por 10.03.2010 / 03:22
2

Se você mantiver algumas das bibliotecas no diretório / usr / local / lib, deverá adicioná-lo ao arquivo /etc/ld.so.conf e executar o comando ldconfig . Talvez, executar ldconfig seja a única coisa de que você precisa (se ld.so.conf já estiver certo).

Usar a variável de ambiente LD_LIBRARY_PATH também funcionará, mas é menos eficiente, pois o cache ldconfig não é usado neste caso.

    
por 10.03.2010 / 08:40