不少人在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