Boost, Qt, zlib, libpng 등에 대한 종속성이 많은 대규모 애플리케이션(P라고 부르겠습니다)이 있습니다. 최근에 나는 새로운 공유 객체를 동적으로 로딩해야 하는 기능을 P에 추가했습니다 lib1.so
. lib1.so
MATLAB API에 따라 다릅니다. 따라서 P가 이미 의존하고 있는 많은 라이브러리에 의존하게 됩니다.
문제는 lib1.so
P 내에서 (Qt 5.12의 QLibrary 클래스를 사용하여) 동적으로 로드하려고 하면 로드가 실패한다는 것입니다. 실패 메시지는 Matlab 공유 객체를 찾을 수 없다는 것입니다. 그러나 공유 객체가 이미 존재하며 해당 경로는 LD_LIBRARY_PATH에 있습니다.
lib1.so
동일한 LD_LIBRARY_PATH 값을 사용하여 간단한 애플리케이션을 로드하려고 하면 제대로 작동합니다.
내 생각엔 P가 로드 시간에 공유 객체를 로드하고 lib1.so
동일한 라이브러리(그러나 다른 버전)가 동적 로드 시간에 로드되기를 원하며 이 충돌은 lib1.so
P 내에 로드되는 것이 허용되지 않는다는 것입니다.
strace
P에서 명령을 사용해 보았지만 lib1.so
동적으로 로드되기 때문에 별로 도움이 되지 않았습니다.
이 오류를 발생시키는 공공 도서관을 찾는 가장 좋은 방법은 무엇입니까?