我需要在执行c程序(运行时)内找到可用的(安装在系统中)GCC版本(主要和次要)。意思是,以编程方式提取可用gcc的版本(就像我在shell中一样,键入gcc --version,但在c程序中)。
__GNUC__
和__GNUC_MINOR__
仅在编译时有用,我从gnu_get_libc_version()
找到了gnu/libc_version.h
函数,但它只获取了libc版本和我需要GCC版本。如果GCC有类似的东西,那就太棒了......
我真的想避免调用shell命令来执行此操作。
答案 0 :(得分:16)
有一种简单的方法:
$ gcc -dumpversion
4.6
答案 1 :(得分:8)
使用参数gcc
调用--version
shell命令;这是正确的方法。请参阅popen()
来执行此操作。
或者您可以调用GCC来编译打印__GNUC__
和__GNUC_MINOR__
值的程序。但如果有问题的GCC配置为交叉编译,那将无效。
替代方法是在二进制文件中搜索版本字符串,并希望你得到正确的字符串,格式不会改变,版本字符串足够清晰,你可以充分放心地识别它。
用1.5个字:不要。
答案 2 :(得分:5)
我需要找出可用的(安装在系统中)GCC版本(主要和次要)
你打算怎么处理这些信息?
您的问题无法获得有意义的答案,因为
/usr/bin
/usr/bin
中的某个版本 pretentds 可能为gcc-X.Y
,但实际上是gcc-Z.W
,Clang
或{{1等等。但是如果你坚持要得到一个没有意义的答案,icc
并解析结果输出。