[실패 사례] gcc 버전이 낮은 상용 리눅스 서버에서 프로그램 설치 시 GLIBCXX' not found 에러
by Kibua202020. 6. 17.
실패 사례입니다.
상용 서비스를 하고 있는 리눅스 서버에 우분투에서 gcc로 빌드한 응용프로그램을 설치해야 합니다. 일반 리눅스 서버라면 필요한 패키를 설치하면 가능하지만 이미 상용 서버로 운영되고 있어 기 설치된 프로그램에 영향을 줄 수 있는 패키지의 추가 설치가 불가능합니다 프로그램 설치를 위해서 여러 방법을 시도했지만 결국 libc 버전 차이로 설치가 불가능 하다는 것으로 결론 지었습니다.
상용 리눅스 서버 전제 조건:
기 운영 중이 프로그램으로 인하여 서버에 추가 패키지 설치 불가
상당히 오래된 설치 상태에서 추가 패키지 업데이트 없음
잠재적 결론
shared lib는 일반 서버에서 상용 리눅스 서버로 local lib로 참조가 가능하지만,libc는 불가능
libc을 업데이트를 위해서는 상용 리눅스 버전의 gcc 컴파일 버전을 업데이트해야 함.
결론을 얻기 위한 과정
1. 설치하고자 하는 프로그램의 lib 종속성을 확인: $ ldd <my program> 명령어를 사용
(위키피디아에서 발췌) glibc는단일 유닉스 규격과POSIX(1c, 1d, 1j)가 요구하는 기능들을 제공하며,ISOC11,ISOC99,버클리 유닉스 (BSD) 인터페이스 등에서 요구하는 몇몇 기능들도 제공한다. 추가적으로 glibc는 또한 GNU 개발에 필요하다고 여겨지거나 유용한 확장들도 제공한다.
Glibc는 수많은 여러 커널들과 여러 하드웨어 아키텍처에서 돌아간다. 그러나 가장 흔한 사용은 x86 하드웨어 상의 리눅스 커널에서의 사용이다. 공식적으로 지원되는 하드웨어는[12] :ARM 아키텍처,알파 프로세서,PA-RISC, IA-64, Motorola m68k, MicroBlaze,MIPS 아키텍처, Nios II,파워PC,s390,SPARC,타일64, 그리고 x86이다. 이것은 Hurd와 리눅스 커널을 지원한다.
이것의 대안으로, 다른 C 표준 라이브러리는 다음과 같다: Bionic libc,dietlibc,EGLIBC,klibc, musl, Newlib, 그리고 uClibc.
댓글