Usando 'ldconfig' sem tocar nos arquivos do sistema

2

Eu compilei uma biblioteca e agora devo executar ldconfig . No entanto, eu prefiro não modificar /etc/ld.so.conf , nem qualquer outro arquivo de sistema. É possível gerar o cache em outro lugar e torná-lo visível apenas durante a compilação de programas selecionados? Ou devo definir manualmente LD_LIBRARY_PATH e LD_RUN_PATH para essa finalidade?

    
por Elena 01.07.2015 / 09:33

1 resposta

2

Você pode verificar a opção -f do ldconfig :

-f conf
Use conf instead of /etc/ld.so.conf.

Se você executar:

ldconfig -f custom.conf

com usuário com privilégios suficientes, ele modificará /etc/ld.so.cache . ld/etc/ld.so.cache e não acho que você consiga ler um arquivo diferente.

Como você não quer modificar os arquivos do sistema, você pode fazer o seguinte:

gcc -W -Wall -L/path_to_your_library -lyour_library test.c -o testo

para construir seu testo.c

Então:

export LD_LIBRARY_PATH=/path_to_your_library

para executá-lo, embora a configuração de LD_LIBRARY_PATH ajude na depuração e que experimente uma versão mais nova de uma biblioteca, seu uso na configuração e na implantação do ambiente de desenvolvimento geral seja considerado inválido. Mais você pode conferir aqui .

Outra abordagem poderia estar usando rpath :

unset LD_LIBRARY_PATH
gcc -L/path_to_your_library -Wl,-rpath=/path_to_your_library -W -Wall -o testo testo.c -lyour_library

Com o método rpath , cada programa consegue listar seus locais de biblioteca compartilhada independentemente. Desvantagens: as bibliotecas compartilhadas devem ser instaladas em um local fixo. Também não testei, mas pode haver problemas se a biblioteca se referir a uma montagem NFS.

    
por 01.07.2015 / 10:16

Tags