Come posso tracciare il caricamento della libreria?


16

Ho un programma che dipende dalla libreria collegata a libboost 1.67, installato nel sistema. Quando lo avvio, ho un errore che libboost_system.so.1.58non esiste. LD_PRELOADe LD_LIBRARY_PATHnon sono impostati.

lddtreel'esecuzione non mostra questa libreria come dipendenza ma lo lddfa.

Come posso tracciare da dove è richiesta la libreria?

Risposte:


16

Se su un sistema GNU, prova a eseguire l'applicazione con:

LD_DEBUG=libs your-application

Vedi LD_DEBUG=helpper più opzioni o man ld.so.


quando provo LD_DEBUG = libs python3.6 su tcsh ottengo il comando LD_DEBUG non trovato. Qual è l'alternativa tcsh?
Gansub,

1
@gansub prefisso il comando con envin tcsh
Stéphane Chazelas

6

Se il programma sta caricando manualmente libboost_system usando dlopen (), potresti essere in grado di trovare dove lo sta facendo usando ltrace per vedere se sta chiamando dlopen (), e forse gdb per impostare un breakpoint sulle chiamate a dlopen () e poi generare un backtrace dello stack. (Vedi anche latrace .)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.