在运行时检查版本的GCC(Check GCC version in runtime)

2019-09-17 02:49发布

我需要找出可用的(安装在系统)版本的GCC AC程序的执行(在运行时)内(主要和次要)。 这意味着,编程提取可用的gcc版本(一样的,如果我是在一个壳和类型的gcc --version,但在交流计划)。

__GNUC____GNUC_MINOR__仅在编译时有用,我已经找到了gnu_get_libc_version()从功能gnu/libc_version.h ,但它只是让我的libc版本的不同,我需要的GCC版本。 如果没有为GCC类似的东西将是巨大的...

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

Answer 1:

调用gcc与参数外壳命令--version ; 它是这样做的正确方法。 见popen()来做到这一点。

或者,你可以调用与GCC编译程序,其打印的价值观__GNUC____GNUC_MINOR__ 。 但是,如果有问题的GCC被配置为跨compilaton这是行不通的。

替代将是搜索版本字符串的二进制和希望你正确的,该格式不会改变,该版本字符串是不够鲜明,为您与足够的信心识别它。

在1.5万个字:不。



Answer 2:

有一个简单的方法:

$ gcc -dumpversion
4.6


Answer 3:

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

你打算用这些信息做什么?

你不能得到一个有意义的回答你的问题,因为

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

但是,如果你坚持要一个毫无意义的答案, popen("gcc --version")并分析所生成的输出。



文章来源: Check GCC version in runtime
标签: c linux gcc