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?

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.


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 .)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.