대규모 애플리케이션에서 라이브러리 충돌을 찾는 가장 좋은 방법은 무엇입니까?

대규모 애플리케이션에서 라이브러리 충돌을 찾는 가장 좋은 방법은 무엇입니까?

Boost, Qt, zlib, libpng 등에 대한 종속성이 많은 대규모 애플리케이션(P라고 부르겠습니다)이 있습니다. 최근에 나는 새로운 공유 객체를 동적으로 로딩해야 하는 기능을 P에 추가했습니다 lib1.so. lib1.soMATLAB API에 따라 다릅니다. 따라서 P가 이미 의존하고 있는 많은 라이브러리에 의존하게 됩니다.

문제는 lib1.soP 내에서 (Qt 5.12의 QLibrary 클래스를 사용하여) 동적으로 로드하려고 하면 로드가 실패한다는 것입니다. 실패 메시지는 Matlab 공유 객체를 찾을 수 없다는 것입니다. 그러나 공유 객체가 이미 존재하며 해당 경로는 LD_LIBRARY_PATH에 있습니다.

lib1.so동일한 LD_LIBRARY_PATH 값을 사용하여 간단한 애플리케이션을 로드하려고 하면 제대로 작동합니다.

내 생각엔 P가 로드 시간에 공유 객체를 로드하고 lib1.so동일한 라이브러리(그러나 다른 버전)가 동적 로드 시간에 로드되기를 원하며 이 충돌은 lib1.soP 내에 로드되는 것이 허용되지 않는다는 것입니다.

straceP에서 명령을 사용해 보았지만 lib1.so동적으로 로드되기 때문에 별로 도움이 되지 않았습니다.

이 오류를 발생시키는 공공 도서관을 찾는 가장 좋은 방법은 무엇입니까?

관련 정보