我需要find可用(安装在系统中)GCC版本(主要和次要)在交stream程序的执行(运行时)。 意思是,编程提取可用的gcc的版本(就像我在一个shell和types的gcc –version,但在交stream程序)。
__GNUC__
和__GNUC_MINOR__
只在编译时有用,而且我从gnu/libc_version.h
find了gnu_get_libc_version()
函数,但它只能得到我的libc版本,而且我需要GCC版本。 如果有类似的海湾合作委员会这将是伟大的…
我真的想避免调用一个shell命令来做到这一点。
调用带有参数--version
的gcc
shell命令; 这是做到这一点的正确方法。 见popen()
来做到这一点。
或者你可以调用GCC来编译一个打印__GNUC__
和__GNUC_MINOR__
值的程序。 但是,如果有问题的GCC被配置为交叉编译,这将不起作用。
另一种方法是在二进制文件中搜索版本字符串,并希望得到正确的版本,格式不会改变,版本字符串足够清晰,足以让您足够自信地识别它。
用1.5的话说:不要。
有一个简单的方法:
$ gcc -dumpversion 4.6
我需要找出可用(安装在系统中)GCC版本(主要和次要)
你打算怎么处理这些信息?
你不能得到有意义的答案,因为你的问题
/usr/bin
安装任何GCC /usr/bin
有一个版本,其默认为gcc-XY
,但实际上是gcc-ZW
或Clang
或icc
等。 但是如果你坚持得到一个毫无意义的答案, popen("gcc --version")
并解析结果输出。