실행 파일을 ld
으로 링크 할 때 실행 파일이 의존하는 라이브러리 목록을 제공합니다. 이 라이브러리에 대한 위치 정보의 유일한 소스입니까, 아니면 오브젝트 파일에 메타 데이터로 저장된 종속 라이브러리의 기본 버전에 대한 정보입니까?ELF 오브젝트 파일은 종속 라이브러리의 파일 시스템 경로를 저장합니까?
구체적인 문제는 이것이다 : 나는 모두 제 3 라이브러리 lC
에 따라 두 개의 종속 라이브러리 lA
및 lB
을, 링크, 그리고 링크 라인이 라이브러리에 대한 참조를 배치합니다. lA
의 C++ 클래스 메서드가 lB
의 클래스 메서드와 다른 버전 lC
을 호출하고있는 것 같습니다. 이것이 어떻게 가능한지? 나는 이것이 백 트레이시를보고 gdb
에서 보는 것을 안다.
:
내가
DT_RPATH
및DT_SONAME
에 대한 통찰력의 몇 내 블로그에 당신을 보낼 수 있습니다 * 일어날 수 없다. 따라서 설명이 잘못되었거나 관찰 된 결과에 대한 해석이 잘못되었습니다. 유감스럽게도 실험을 복제 할 수있을만큼 자세하게 설명하지 않았으므로 더 이상 도움을 드릴 수 없습니다. 질문을 수정하고 최소한의 예를 보여 주면 모든 것이 공개됩니다. –