2014-12-30 3 views
0

저는 2 개의 공유 라이브러리로 작업하고 있습니다. 하나는 (foo) CMake를 사용하고, 다른 하나는 automake를 사용하고 있습니다. 나는 심볼릭 링크에 대한 약간의 배포 문제와 그 결과가 libfoo.so (심볼릭 링크가 없다)이기 때문에, foo의 버전과 분열 속성을 제거했다. 문제는 libbar.so가 libfoo.so.1을 필요로한다는 것입니다 (필자는 readelf로 찾았습니다). libfoo.so.1 대신 libfoo.so를 사용하도록 libbar.so를 어떻게 만들 수 있습니까?공유 라이브러리의 soname은 어떻게 선택합니까?

답변

0

어떻게 대신, libfoo.so를 사용하는 libbar.so을 할 수 libfoo.so.1

libbar.so이 링크 될 때 libbar.soDT_NEEDED 태그가 모든 라이브러리의 DT_SONAME의 집합에서, 당시 기록이 에 연결됩니다. 이다

, libbar.solibfoo.so.1DT_NEEDED, 다음은 libfoo.so.1DT_SONAMElibfoo.so에 링크 된 사실이어야가있는 경우.

이있는 경우DT_SONAME (또는 libfoo.soDT_SONAME로), 다음 libfoo.so의 버전 libfoo.so.1DT_NEEDED 태그를 제거하는 필요 충분 것을 에 대해 libbar.so을 재 연결없이 libfoo.so.

관련 문제