LD가 계속 "사용 가능한 버전 정보 없음"을 출력하는 이유는 무엇입니까?

LD가 계속 "사용 가능한 버전 정보 없음"을 출력하는 이유는 무엇입니까?

라이브러리를 로드할 때마다 오류가 발생합니다.

사용 가능한 버전 정보가 없습니다.

라이브러리는 실행 중인 PC(mandriva 2010.2)가 아닌 다른 PC(ubuntu 10.04)에서 컴파일되었습니다.

$ ldd /usr/local/gnu-eabi-4.5.2/i686-pc-linux-gnu/arm-eabi/lib/libbfd-2.21.so
/usr/local/gnu-eabi-4.5.2/i686-pc-linux-gnu/arm-eabi/lib/libbfd-2.21.so: /lib/libz.so.1: no version information available (required by /usr/local/gnu-eabi-4.5.2/i686-pc-linux-gnu/arm-eabi/lib/libbfd-2.21.so)
 linux-gate.so.1 =>  (0xffffe000)
 libz.so.1 => /lib/libz.so.1 (0xb77a7000)
 libc.so.6 => /lib/i686/libc.so.6 (0xb7655000)
 /lib/ld-linux.so.2 (0xb787a000)

편집: 해결 방법이 작동하지 않습니다.

답변1

아니요, 그렇지 않습니다. 이는 프로그램을 컴파일할 때 링크한 libz 버전이 사용 중인 madriva 시스템의 버전과 다른 도구로 구축되었음을 의미하는 것 같습니다. Mandriva 사본에는 프로그램이 원래 링크된 libz 라이브러리 사본에 있는 기호 버전 정보가 누락되었습니다. 이는 libz 라이브러리 자체의 버전보다는 각 빌드 환경의 차이점과 더 관련이 있습니다.

바이너리와 동일한 도구 세트(예: 라이브러리에 기호 버전을 삽입하는 도구)로 빌드된 libz의 복사본을 제공할 때까지 이 메시지가 계속 표시될 것으로 생각됩니다. 또는 Mandriva 시스템에서 libz를 컴파일할 때 사용되는 것과 유사한 도구를 사용하여 바이너리를 빌드하여 바이너리에 기호 버전 참조가 없도록 합니다.

바라보다: http://harmful.cat-v.org/software/dynamic-linking/versioned-symbols http://www.linux-kongress.org/1997/youngdale.html http://www.usenix.org/publications/library/proceedings/als00/2000papers/papers/full_papers/browndavid/browndavid_html/

필요하지 않은 기호 버전 참조를 제거하고 다른 모든 버전 참조(있는 경우)를 유지하기 위해 다른 시스템에서 컴파일된 바이너리를 수정할 수 있는 도구는 없습니다.

답변2

"사용 가능한 버전 정보 없음" 오류는 사용 중인 Mandrivia 시스템의 버전보다 최신 버전의 libz에 대해 라이브러리를 컴파일했음을 의미합니다.

관련 정보