在运行时检查GCC版本

时间:2012-05-09 12:25:09

标签: c linux gcc

我需要在执行c程序(运行时)内找到可用的(安装在系统中)GCC版本(主要和次要)。意思是,以编程方式提取可用gcc的版本(就像我在shell中一样,键入gcc --version,但在c程序中)。

__GNUC____GNUC_MINOR__仅在编译时有用,我从gnu_get_libc_version()找到了gnu/libc_version.h函数,但它只获取了libc版本和我需要GCC版本。如果GCC有类似的东西,那就太棒了......

我真的想避免调用shell命令来执行此操作。

3 个答案:

答案 0 :(得分:16)

有一种简单的方法:

$ gcc -dumpversion
4.6

答案 1 :(得分:8)

使用参数gcc调用--version shell命令;这是正确的方法。请参阅popen()来执行此操作。

或者您可以调用GCC来编译打印__GNUC____GNUC_MINOR__值的程序。但如果有问题的GCC配置为交叉编译,那将无效。

替代方法是在二进制文件中搜索版本字符串,并希望你得到正确的字符串,格式不会改变,版本字符串足够清晰,你可以充分放心地识别它。

用1.5个字:不要。

答案 2 :(得分:5)

  

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

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

您的问题无法获得有意义的答案,因为

  1. 用户可能未在/usr/bin
  2. 中安装任何GCC
  3. 可能在系统的其他位置安装了5个个不同的版本
  4. /usr/bin中的某个版本 pretentds 可能为gcc-X.Y,但实际上是gcc-Z.WClang或{{1等等。
  5. 但是如果你坚持要得到一个没有意义的答案,icc并解析结果输出。