/etc/ld.so.conf não contém / usr / lib

3

Estou usando pkg-config para ajudar a fornecer as bibliotecas corretas durante a compilação do c ++. Pelo que entendi, ele procura em diretórios fornecidos por /etc/ld.so.conf . Meu ld.so.conf referencia os seguintes locais lib através de uma diretiva include apontando para /etc/ld.so.conf.d/*.conf :

/usr/local/lib
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu

O problema é que a biblioteca que preciso está abaixo de /usr/lib por padrão.

Posso apenas adicionar este caminho a /etc/ld.so.conf ou mover a biblioteca ou qual é a prática recomendada?

    
por user1561108 25.03.2013 / 02:39

2 respostas

3

O pkg-config não usa ld.so.conf, ele normalmente armazena arquivos de configuração em /usr/lib/pkgconfig/ , (especifique a variável PKG_CONFIG se necessário)

ou seja, /usr/lib/pkgconfig/libmtp.pc

# libmtp pkg-config source file

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: libmtp
Description: libmtp is a library for accessing Media Transfer Protocol devices
Version: 1.1.5
Requires: libusb-1.0
Conflicts:
Libs: -L${libdir} -lmtp
Libs.private: -lgcrypt 
Cflags: -I${includedir} 

Você pode encontrar cflags, libs etc., é assim que o pkg-config fornece os parâmetros de comando necessários.

Assim, para sua própria biblioteca, crie um arquivo semelhante ( leia o documento aqui )

    
por 25.03.2013 / 02:45
4

Para esclarecimentos sobre /etc/ld.so.conf : este arquivo é usado pelo linker / loader dinâmico (tempo de execução) ( ld-linux.so no Linux), que resolve símbolos em um binário que é carregado para ser executado (isso inclui bibliotecas compartilhadas) também). Isso está em contraste com o linker ld , que é usado para montar vários arquivos de objeto / archive juntos e resolve suas dependências.

O vinculador dinâmico verifica /etc/ld.so.conf para um diretório de lista no qual ele deve procurar por bibliotecas compartilhadas ao carregar um binário. Além dos caminhos mencionados, o vinculador também procura seus caminhos padrão ( /lib e /usr/lib no Linux, geralmente alterado para lib64 para o carregador de 64 bits) a menos que o binário tenha sido vinculado um sinalizador que desabilita isso explicitamente ( -x nodefaultlib em binutils ' ld ), caso em que apenas honra ld.so.conf .

    
por 25.03.2013 / 12:50