라이브러리를 로드할 때마다 오류가 발생합니다.
사용 가능한 버전 정보가 없습니다.
라이브러리는 실행 중인 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에 대해 라이브러리를 컴파일했음을 의미합니다.