Comment suivre le chargement de la bibliothèque?


16

J'ai un programme qui dépend de la bibliothèque liée à libboost 1.67, qui est installée dans le système. Lorsque je le lance, j'ai une erreur qui libboost_system.so.1.58n'existe pas. LD_PRELOADet ne LD_LIBRARY_PATHsont pas réglés.

lddtreel'exécution ne montre pas cette bibliothèque comme une dépendance mais le lddfait.

Comment puis-je suivre d'où la bibliothèque est requise?

Réponses:


16

Si sur un système GNU, essayez d'exécuter votre application avec:

LD_DEBUG=libs your-application

Voir LD_DEBUG=helppour plus d'options ou man ld.so.


quand j'essaye LD_DEBUG = libs python3.6 sur tcsh j'obtiens la commande LD_DEBUG non trouvée. Quelle est l'alternative tcsh?
gansub

1
@gansub préfixe la commande avec envdans tcsh
Stéphane Chazelas

6

Si le programme charge manuellement libboost_system à l'aide de dlopen (), vous pourrez peut-être trouver où il le fait en utilisant ltrace pour voir s'il appelle dlopen (), et peut-être gdb pour définir un point d'arrêt sur les appels à dlopen (), puis générer une trace de pile. (Voir aussi latrace .)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.