我需要编译时检查将使用什么版本的glibc。
唯一的编译时间检查(即#defines)我可以找到返回glibc日期(__ GLIBCXX__),日期和版本之间的对应似乎是iffy。如何在编译时检查将要使用的glibc版本?
我的代码将在几个系统上编译和运行,包括一个非常旧的系统。特别是我对使用malloc_info感兴趣(参见http://man7.org/linux/man-pages/man3/malloc_info.3.html)。这是在2.10版本中添加到glibc中的。该程序将在其构建的相同(或相同的系统)上使用。
答案 0 :(得分:5)
我认为您正在寻找的是__GLIBC__
和__GLIBC_MINOR__
,它们代表了GNU C库的主要和次要版本号的int
。有关详细信息,请查看this(archive link)。
因此,如果__GLIBC__
大于2,或__GLIBC__
等于2且__GLIBC_MINOR__
大于或等于10,则malloc_info()
应该有效。