系统为CentOS 6.5,gcc为4.4.7
1 下载源代码包
当前最新版为6.2:
wget http://ftp.gnu.org/gnu/gcc/gcc-6.2.0/gcc-6.2.0.tar.bz2
也可以自行下载其他版本http://ftp.gnu.org/gnu/gcc
2 解压
tar jxf gcc-6.2.0.tar.bz2
3 下载编译依赖
cd gcc-6.2.0
./contrib/download_prerequisites
4 生成Makefile文件先建一个编译的目录, 比较慢,预计一个小时左右
mkdir gcc-build-6.2.0
cd gcc-build-6.2.0/
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
5 编译
make -j4
4表示使用4个核心,根据你的CPU来指定。也可不指定任何参数。
6 安装
sudo make install
7 验证
gcc -v
还有原来的版本,重启后,再验证OK
8 测试
写个测试的程序测试一下:
g++ -std=c++11 -o testCpp11 testCpp11.cpp
顺利编译成功,执行./testCpp11提示:
./testCpp11: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./testCpp11)
./testCpp11: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./testCpp11)
./testCpp11: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./testCpp11)
看来动态库并没有更新。
9 更新动态库
查看动态库的版本:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
确实没有更新,默认情况下,会安装在如下目录:
/usr/local/lib64/libstdc++.so.6.0.22
简单了,将原来的库替换为上面的就可以了:
rm -rf /usr/lib64/libstdc++.so.6
ln -s /usr/local/lib64/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6
然后再查看动态库的版本:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
结果
GLIBCXX_3.4.22
这就是刚刚安装的版本,再执行一下测试程序./testCpp11,成功!
CentOS6.4安装swoole4.2报错:error: #error "GCC 4.8 or later required.
替换原来的gcc版本
update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-pc-linux-gnu-gcc 40
mv /usr/bin/gcc /usr/bin/gcc.bak
ln -s /usr/local/bin/x86_64-pc-linux-gnu-gcc /usr/bin/gcc