今天碰到一個比較坑爹的問題,在centos上用yum安裝編譯環境,運行:
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
結果導致編譯cocos2d-x出現錯誤:
cc1plus: error: unrecognized command line option "-std=c++11"
我google了一番,確定這個錯誤是由於gcc的版本過低造成的
查看gcc版本:
gcc --version
系統顯示:
gcc (GCC) 4.8.2
我又google一番,確定這個版本可以支持c++11
但是cocos2d-x的編譯錯誤確實是運行了yum命令以後纔出現的
我全局搜了一下gcc:
find / -name gcc
有這麼多gcc:
/usr/lib/gcc
/usr/local/lib/gcc
/usr/local/bin/gcc
/usr/local/libexec/gcc
/usr/bin/gcc
再運行:
/usr/bin/gcc --version
gcc (GCC) 4.4.7-4
/usr/local/bin/gcc --version
gcc (GCC) 4.8.2
看來,這個機器上確實有兩個gcc,shell跑的是/usr/local/bin/gcc,但是cocos2dx make時用的是/usr/bin/gcc(爲什麼路徑會不一致,原因還不清楚)
解決的辦法是,運行;
mv /usr/bin/gcc /usr/bin/gcc4.4.7
ln -s /usr/local/bin/gcc /usr/bin/gcc
另外,g++, cc, c++這幾個命令也要改
mv /usr/bin/g++ /usr/bin/g++4.4.7
ln -s /usr/local/bin/g++ /usr/bin/g++
mv /usr/bin/cc /usr/bin/cc4.4.7
ln -s /usr/local/bin/cc /usr/bin/cc
mv /usr/bin/c++ /usr/bin/c++4.4.7
ln -s /usr/local/bin/c++ /usr/bin/c++