libc (GLIBC2.4)의 특정 버전으로 컴파일 된 linux 공유 라이브러리 (.so)가 있고 다른 버전의 libc가있는 시스템에서 사용해야합니다. 문제가되는 라이브러리의 소스가 없으므로 새 시스템을 다시 컴파일 할 수 없습니다. 해당 라이브러리의 종속성을 다른 libc로 변경할 수 있습니까?libc의 다른 버전에 공유 라이브러리를 다시 연결하십시오.
답변
이전 glibc가있는 시스템에서 .so가 필요한 경우 소스 코드가 필요하고 이전 glibc로 다시 컴파일/다시 링크하십시오. 다른 방법으로 기존 시스템에 필요한 glibc를 기본값이 아닌 위치에 설치하고이 실행 파일에 대해 LD_LIBRARY_PATH를 조정합니다 .so
더 새로운 glibc가 있으면 일반적으로 glibc로 문제가되지 않습니다 역 호환이되는 경향이있다.
가장 좋은 방법은 시스템의 기존 glibc 버전을 컴파일 한 다음 해당 glibc 및 공유 라이브러리를 사용하여 응용 프로그램을 빌드하는 것입니다. 추측하지만 ...
라이브러리에서 변경된 인터페이스를 실제로 사용하지 않는 한 결과 .so
파일의 버전에 대한 참조를 16 진수로 편집 할 수 있습니다. 그들은 어쨌든 모든 텍스트입니다.
질문과 마찬가지로 매우 hackish. 그 참조가 모든 텍스트라는 것을 나는 몰랐다. –
GLIBC _... 버전 문자열이 모두 텍스트가 아니므로 바이너리에서 더 낮은 버전으로 변경하면 심볼이 여전히 작동하지 않습니다. – pts
텍스트입니다. 그것들은'.dynstr' 문자열 테이블에있는 것으로 해석 될 심볼 이름의 문자열과 같습니다. –
glibc의 이전 버전에 맞춰 실행해야합니까? – bmargulies