C言語で glibc のバージョンを確認する方法

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;
}

実行時にバージョンを確認する

glibcgnu_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を使っているか否かまで判定できます