Як відстежувати завантаження бібліотеки?


16

У мене є програма, яка залежить від бібліотеки, яка пов'язана з libboost 1.67, яка встановлена ​​в системі. Коли я запускаю, у мене виникає помилка, libboost_system.so.1.58якої не існує. LD_PRELOADі LD_LIBRARY_PATHне встановлені.

lddtreeВиконання не відображає цю бібліотеку як залежність, але є ldd.

Як я можу простежити, де потрібна бібліотека?

Відповіді:


16

Якщо в системі GNU, спробуйте запустити свою програму з:

LD_DEBUG=libs your-application

Див. LD_DEBUG=helpДодаткові варіанти або man ld.so.


коли я намагаюся LD_DEBUG = libs python3.6 на tcsh, я отримую команду LD_DEBUG не знайдено. Яка альтернатива tcsh?
gansub

1
@gansub префікс команди з envin tcsh
Stéphane Chazelas

6

Якщо програма завантажує libboost_system вручну за допомогою dlopen (), ви, можливо, зможете знайти, де це робиться, використовуючи ltrace, щоб побачити, чи викликає він dlopen (), а може бути, gdb встановити точку перерви на виклики dlopen (), а потім генерування зворотного стеку. (Див. Також латрас .)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.