Como rastreio o carregamento da biblioteca?

16

Eu tenho um programa que depende da biblioteca vinculada ao libboost 1.67, instalada no sistema. Quando inicio, tenho um erro que libboost_system.so.1.58não existe. LD_PRELOADe LD_LIBRARY_PATHnão estão definidos.

lddtreeA execução não mostra essa biblioteca como dependência, mas lddsim.

Como posso rastrear de onde a biblioteca é necessária?

Alex
fonte

Respostas:

16

Se estiver em um sistema GNU, tente executar seu aplicativo com:

LD_DEBUG=libs your-application

Veja LD_DEBUG=helppara mais opções ou man ld.so.

Stéphane Chazelas
fonte
quando tento LD_DEBUG = libs python3.6 no tcsh, obtenho o comando LD_DEBUG não encontrado. Qual é a alternativa tcsh?
Gansub # 6/19
1
@gansub prefixo com o comando envem tcsh
Stéphane Chazelas
6

Se o programa estiver carregando o libboost_system manualmente usando dlopen (), você poderá descobrir onde está fazendo isso usando ltrace para ver se está chamando dlopen () e talvez o gdb para definir um ponto de interrupção nas chamadas para dlopen () e, em seguida, gerando um rastreamento de pilha. (Veja também latrace .)

DW
fonte