3. 표준 C 라이브러리 : GNU C 라이브러리(glib) :: YJcode

유닉스 구현에 따라 표준 C 라이브러리 구현이 다를 수 있다. 리눅스에서 가장 널리 쓰이는 구현은 GNU C 라이브러리다.

 

때로 시스템의 glibc 버전을 판별해야 할 때가 있다. 쉘에서는 마치 실행 프로그램인 양 실행시켜보면 알 수 있다.라이브러리를 실행파일처럼 실행시키면, 버전 번호등을 출력한다.

 

$ /lib/libc.so.6

 

일부 리눅스 배포판에서는 GNU C 라이브러리가 /lib/libc.so.6 말고 다른 곳에 있을 수도 있다. 라이브러리의 위치를 찾는 방법 중 하나는 glibc와 동적으로 링크된 실행파일을 대상으로 ldd 프로그램을 실행하는 것이다. 출력된 라이브러리 의존관계 목록을 보고 glibc 공유 라이브러리의 위치를 찾을 수 있다.

 

$ldd myprog | grep libc

 

응용 프로그램이 시스템에 현존하는 GNU C 라이브러리의 버전을을 알아낼 수 있는 두가지 방법이 있다. 상수를 확인하거나 라이브러리 함수를 호출하는 것이다. 버전 2.0부터 glibc는 __GLIBC__ 와 __GLIBC_MINOR__라는, 컴파일할때 참조할 수 있는 두 상수를 정의한다. glibc 2.12가 설치된 시스템에서 이 상수들의 값은 각각 2와 12다.하지만 이들 상수는 한 시스템에서 컴파일해서 glibc버전이 상이한 다른 시스템에서 실행하는 프로그램의 경우에는 그 쓰임이 제한될 수밖에 없다. 이런 경우에 대비해서, 프로그램은 gnu_get_libc_version() 함수를 호출해 glibc의 버전을 실행 시에 알아낼 수 있다.

 

#include <gnu/libc-version.h>



const char* gnu_get_libc_version(void) ;

 

gnu_get_libc_version() 함수는 2.12 같은 문자열을 가리키는 포인터를 리턴한다.

+ Recent posts