在运行时检查GCC版本

我需要find可用(安装在系统中)GCC版本(主要和次要)在交stream程序的执行(运行时)。 意思是,编程提取可用的gcc的版本(就像我在一个shell和types的gcc –version,但在交stream程序)。

__GNUC____GNUC_MINOR__只在编译时有用,而且我从gnu/libc_version.hfind了gnu_get_libc_version()函数,但它只能得到我的libc版本,而且我需要GCC版本。 如果有类似的海湾合作委员会这将是伟大的…

我真的想避免调用一个shell命令来做到这一点。

调用带有参数--versiongcc shell命令; 这是做到这一点的正确方法。 见popen()来做到这一点。

或者你可以调用GCC来编译一个打印__GNUC____GNUC_MINOR__值的程序。 但是,如果有问题的GCC被配置为交叉编译,这将不起作用。

另一种方法是在二进制文件中搜索版本字符串,并希望得到正确的版本,格式不会改变,版本字符串足够清晰,足以让您足够自信地识别它。

用1.5的话说:不要。

有一个简单的方法:

 $ gcc -dumpversion 4.6 

我需要找出可用(安装在系统中)GCC版本(主要和次要)

你打算怎么处理这些信息?

你不能得到有意义的答案,因为你的问题

  1. 用户可能没有在/usr/bin安装任何GCC
  2. 可能有5个不同的版本安装在系统的其他地方
  3. 可能在/usr/bin有一个版本,其默认gcc-XY ,但实际上是gcc-ZWClangicc等。

但是如果你坚持得到一个毫无意义的答案, popen("gcc --version")并解析结果输出。