在运行时检查GCC版本

Ben*_* K. 5 c linux gcc

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

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

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

小智 18

有一个简单的方法:

$ gcc -dumpversion
4.6
Run Code Online (Sandbox Code Playgroud)


Aar*_*lla 8

gcc使用参数调用shell命令--version; 这是正确的方法.看到popen()这样做.

或者,你可以调用与GCC编译程序打印出值__GNUC____GNUC_MINOR__.但如果有问题的GCC配置为交叉编译,那么这将不起作用.

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

用1.5个字:不要.

  • "这是正确的做法".没有.没有*没有正确的方法来做到这一点,因为这个问题是基于明显虚假的假设. (2认同)

Emp*_*ian 5

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

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

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

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

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