libMissingSymbol.so, libMiddle.so 및 libSymbolHaver.so의 세 라이브러리가 있다고 가정 해보십시오. libMissingSymbol은 libSymbolHaver에 정의 된 심볼을 포함하지만 libMiddle에만 종속됩니다. libMiddle은 libSymbolHaver에 의존성이 있다고 가정되지만 그렇지 않습니다. 나는이 라이브러리가 어셈블 된 소스 코드 또는 링크 해제 된 오브젝트 파일을 가지고 있지 않습니다. libMissingSymbol이로드 타임에 필요한 심볼을 찾을 수 있도록 libMiddle을 libSymbolHaver와 연결할 수 있습니까? 이 세 가지 공유 객체 파일과 필요한 도구 만 사용하여이 문제를 해결할 수있는 방법이 있습니까? 나는 내 프로젝트에서 줄을 더 이상 부수 지 않기 위해 libMiddle에 대한 종속성 변경을 금지하는 동일한 내용 (SONAME 포함)이있는 라이브러리로 끝내야한다. (관련성 손질)기존 공유 객체 라이브러리에 종속성 추가
가설 readelf 출력은 명확히 : libMissingSymbol 그것이로드시 필요한 기호를 찾을 수 있도록 나를 libSymbolHaver와 libMiddle을 연결하는
$ readelf -s libMissingSymbol.so
123: 00000000 0 OBJECT GLOBAL DEFAULT UND MangledSymbol
$ readelf -d libMissingSymbol.so
Dynamic section at offset 0x42434 contains 37 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libMiddle.so]
0x0000000e (SONAME) Library soname: [libMissingSymbol.so]
$ readelf -d libMiddle.so
Dynamic section at offset 0x75b28 contains 29 entries:
Tag Type Name/Value
0x0000000e (SONAME) Library soname: [libMiddle.so]
$ readelf -s libSymbolHaver.so
35: 00064d0c 4 OBJECT GLOBAL DEFAULT 22 MangledSymbol
답변 해 주셔서 감사합니다. 다른 방법 (예 : libMiddle 디 컴파일 링 및 올바른 종속성으로 다시 빌드)을 수행 할 수 있는지에 대한 통찰력이 있습니까? –
@ThomasDeSilva 답변을 업데이트했습니다. –
Re : point # 1,이 모든 것의 요점은 내가 제어 할 수없는 다른 실행 환경을 에뮬레이트하기 때문입니다. (자세한 특정 포럼 [여기]] (https : //www.chiefdelphi.com/forums/showthread.php?t=153697)을 참조하십시오. 귀하의 개정에 따라 제 상황이 다시 점검되었습니다. 실제 라이브러리에서 버전 차이가 발생했습니다. 귀하의 접근 방식을 시도 할 필요는 없었지만 귀하의 답변을 수락합니다. 다시 도움을 주셔서 감사합니다. –