5

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

和仅在编译时有用__GNUC____GNUC_MINOR__gnu_get_libc_version()从 中找到了该函数gnu/libc_version.h,但它只为我提供了 libc 版本,我需要 GCC 版本。如果 GCC 有类似的东西,那就太好了......

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

4

3 回答 3

17

有一个简单的方法:

$ gcc -dumpversion
4.6
于 2014-03-17T08:28:49.873 回答
8

使用参数调用gccshell 命令--version;这是正确的方法。看看popen()这样做。

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

替代方法是在二进制文件中搜索版本字符串,并希望你得到正确的版本,格式不会改变,版本字符串足够不同,让你有足够的信心识别它。

用1.5个字:不要。

于 2012-05-09T12:41:32.413 回答
5

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

你打算如何处理这些信息?

你的问题无法得到有意义的答案,因为

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

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

于 2012-05-09T14:42:12.587 回答