Como posso rastrear o carregamento da biblioteca?

13

Eu tenho um programa que depende da biblioteca que está vinculada ao libboost 1.67, que está instalado no sistema. Quando eu inicio, tenho um erro que libboost_system.so.1.58 não existe. LD_PRELOAD e LD_LIBRARY_PATH não estão definidos.

lddtree execução não mostra esta biblioteca como dependência, mas ldd faz.

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

    
por Alex 10.06.2018 / 17:58

2 respostas

14

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

LD_DEBUG=libs your-application

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

    
por 10.06.2018 / 18:18
5

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

    
por 10.06.2018 / 22:34

Tags