不少人在shell脚本中获取gcc版本号的方法是通过对gcc --version命令的输出结果进行字符串截取处理获取的,实际上还有更好的方式精确获取gcc的主、副版本号与补丁版本号,即通过gcc提供的版本宏来获取。
该方法参考至uboot源码中的gcc-version.sh脚本,代码如下:
### configure C compiler
export compiler=$(which gcc)
### get version code
MAJOR=$(echo __GNUC__ | $compiler -E -xc - | tail -n 1)
MINOR=$(echo __GNUC_MINOR__ | $compiler -E -xc - | tail -n 1)
PATCHLEVEL=$(echo __GNUC_PATCHLEVEL__ | $compiler -E -xc - | tail -n 1)
若仅需要版本号字符串,不需要其中某一字段的具体值,亦可通过gcc编译器提供的-dumpversion参数(注意!只有一个‘-’!)获取版本号字符串。当然,使用该参数获取版本号时若配合awk命令使用,同样也可以轻松获取版本号中各个字段的值。
$ gcc -dumpversion
4.9.3