리눅스 GLIBC 패키지란? 호환성 문제에 대해
- 운영체제(OS)
- 2023. 8. 26.
컴퓨터 프로그램은 기본적인 기능을 수행하기 위해 운영체제와 상호 작용해야 합니다. 예를 들어, 파일을 읽거나 쓰고, 메모리를 할당하거나 해제해야 합니다. 이런 작업을 수행하기 위한 인터페이스들이 있는데요. 이런 기본적인 인터페이스를 제공하는 게 glibc입니다. 리눅스에서 glibc는 GNU 프로젝트의 C 라이브러리를 나타냅니다. GNU 프로젝트는 1983년에 시작된 공개 소프트웨어 프로젝트로 현재 리눅스 배포판에는 대부분 glibc가 포함되어 있습니다.
GLIBC
glibc는 C와 C++ 프로그램이 운영체제와 상호작용할 수 있도록 시스템 호출, 기본 데이터 구조, 알고리즘, 스레드 지원, 수학 함수, 입력/출력 등과 같은 기본 런타임 기능을 제공합니다. 때문에 대부분의 리눅스 배포판은 기본 C 라이브러리로 glibc를 사용한다고 보셔도 됩니다. 예를 들어 libc, libnsl, libcrypt, libnss 등 주요 라이브러리가 glibc에 포함됩니다.
GLIBC 버전 및 호환성 문제
glibc는 꾸준히 개발되고 있습니다. 배포판 별로 버전이 다르게 사용될 수 있는데, 프로그램을 사용할 때 glbic 버전에 따라 호환성 문제가 발생할 수 있습니다.
예를 들어, 바이너리로 실행 가능한 nginx를 어떤 glbic 버전에서는 실행할 수가 없습니다. nginx가 필요로하는 glibc 내 라이브러리 버전이 호환되지 않기 때문입니다. 프로그램이 라이브러리에 의존하고 있는데, 라이브러리 버전이 바뀌면 함수, 데이터 구조, 크기, 정렬, 변수 등이 변경될 수 있습니다.
가령 특정 .so 파일의 버전이 .so.1에서 .so.2로 변경되는 경우 프로그램과 라이브러리 간의 바이너리 인터페이스를 정의한 ABI (Application Binary Interface)에도 변화가 생길 수 있기 때문에 상위 버전이라도 하위 버전과 호환이 되지 않는 케이스가 있습니다. 물론 항상 그런 건 아니고 호환이 되는 경우도 있습니다.
'운영체제(OS)' 카테고리의 다른 글
리눅스 원하는 so를 포함하는 패키지 확인하는 방법 (yum provides) (0) | 2023.08.27 |
---|---|
아마존 리눅스 2023 PostgreSQL15 설치하는 방법 (0) | 2023.08.26 |
리눅스 nm 명령어 사용 방법 (.so 파일 구성) (0) | 2023.08.25 |
리눅스 watch 명령어 사용 방법 (데이터 변화 확인) (0) | 2023.08.24 |
리눅스 systemctl 등록된 서비스 이름 확인하는 방법 (0) | 2023.08.24 |