라이브러리 로딩을 추적하는 방법은 무엇입니까?

라이브러리 로딩을 추적하는 방법은 무엇입니까?

내 프로그램은 시스템에 설치된 libboost 1.67에 연결된 라이브러리에 의존합니다. 시작하면 libboost_system.so.1.58존재하지 않는 오류가 발생합니다. LD_PRELOAD그리고 LD_LIBRARY_PATH설정되지 않았습니다.

lddtree실행 시 이 라이브러리가 종속성으로 표시되지는 않지만 ldd표시됩니다.

이 라이브러리가 필요한 위치를 어떻게 추적할 수 있나요?

답변1

GNU 시스템의 경우 다음 명령을 사용하여 애플리케이션을 실행해 보세요.

LD_DEBUG=libs your-application

더 많은 옵션을 보려면 리소스를 참조 LD_DEBUG=help하거나 man ld.so.

답변2

프로그램이 dlopen()을 사용하여 libboost_system을 수동으로 로드하는 경우 다음을 사용하여 이 작업을 수행하는 위치를 찾을 수 있습니다.dlopen()을 호출하는지 확인하세요. dlopen()이 호출될 때 gdb가 중단점을 설정한 다음 스택 추적을 생성할 수도 있습니다. (당신은 또한 볼 수 있습니다라트라스.)

관련 정보