Saucy: As bibliotecas compartilhadas de Boost não contêm símbolos

4

Eu preciso vincular alguns arquivos da biblioteca compartilhada do Boost ( .so ). Eu instalei o boost executando

sudo apt-get install libboost-all-dev

Os arquivos de cabeçalho e as bibliotecas estáticas estão instalados corretamente. As bibliotecas compartilhadas também são instaladas, mas não contêm símbolos.

$ nm /usr/lib/x86_64-linux-gnu/libboost_filesystem.so
nm: /usr/lib/x86_64-linux-gnu/libboost_filesystem.so: no symbols

Como isso é possível e como posso corrigi-lo? Eu entendo que este é um problema vago, mas eu tentei apt-get clean e remover completamente e purgar todos os pacotes debian e reinstalar e eu sempre obter o mesmo resultado. Compilar o Boost a partir da fonte e instalar uma versão separada não é o ideal.

    
por user3293204 08.05.2014 / 16:15

2 respostas

3

A maioria das bibliotecas compartilhadas instaladas a partir dos repositórios do Ubuntu não contém símbolos. Os pacotes são normalmente construídos com símbolos de depuração, que são então separados e colocados em pacotes instaláveis separadamente para uso com gdb ou outros depuradores.

Se você quiser ver os símbolos na tabela de símbolos dinâmicos de uma biblioteca compartilhada , quais são os símbolos públicos que podem ser vinculados, use nm -D em vez de apenas nm .

    
por Mike Miller 08.05.2014 / 16:27
0

Eu tive esse mesmo problema com outra biblioteca (libcudart.so). Eu resolvi usando uma biblioteca '.a' estática.

O que eu fiz:

$ find /usr/local/cuda-7.0 -type f -name libcudart\*
directory/libcuda_static.a
$ compiler -Ldirectory -lcudart_static

Espero que isso ajude alguém

    
por xyz 31.07.2015 / 20:52