C言語で glibc のバージョンを確認する方法をまとめます
コンパイル時にバージョンを確認する
以下のマクロを使います
バージョンをprintf()で表示する
#include <stdio.h> int main(void) { printf("%d.%d\n", __GLIBC__, __GLIBC_MINOR__); return 0; }
条件コンパイル
#include <stdio.h> int main(void) { #ifdef __GLIBC__ printf("__GLIBC__\n"); #endif return 0; }
実行時にバージョンを確認する
glibcが gnu_get_libc_version() という関数を用意しています
gnu_get_libc_version(3) - Linux manual page
ヘッダファイルは gnu/libc-version.h です
#include <gnu/libc-version.h> int main(void) { puts(gnu_get_libc_version()); return 0; }
POSIX準拠の関数としては confstr があります
confstr(3) - Linux manual page
サンプルコード
#include <unistd.h> int main(void) { char buf[30] = {0}; confstr(_CS_GNU_LIBC_VERSION, buf, sizeof(buf)-1); puts(buf); return 0; }
confstrはエラーコードを返すので,(実用上意味があるかどうかは別の話として)エラーコードをチェックすればglibcを使っているか否かまで判定できます