因为最近在Linux下编写一个项目,用到了c++11相关的一些功能,但是centos目录yum只能安装到gcc的最新版本4.4.7,但是只有4.8才开始支持c++11功能,所以就安装一个最新版本的gcc来使用。
1.先安装依赖库以下3个和isl(isl找不到)
C++
1 2 3 |
yum install mpfr yum install gmp yum install *mpc* |
2.安装c和c++的依赖库
C++
1 2 3 4 |
yum install glibc-static libstdc++-static yum install gcc yum install gcc-c++ yum install wget |
3.下载gcc最新版本6.3(可以从gcc官网找速度快的源下载)
C++
1 |
wget http://mirrors.concertpass.com/gcc/releases/gcc-6.3.0/gcc-6.3.0.tar.gz |
4.解压
C++
1 |
tar -xf gcc-6.3.0.tar.gz |
5.获取依赖库,再解压目录运行如下命令,会自动下载步骤1中安装的库和isl库
C++
1 |
./contrib/download_prerequisites |
6.配置,然后新建目录,在新目录编译,防止污染源码目录
C++
1 2 3 |
mkdir gcc-build-6.3.0 cd gcc-build-6.3.0/ ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib |
7.然后编译(j4,是用4线程去编译,也可以不用)
C++
1 |
make -j4 |
在make的途中还出错了一次,是因为swap空间不足导致的,所以就创建了一个3G的swap分区才编译成功。
Shell
1 2 3 4 5 6 |
dd if=/dev/zero of=/swapfile bs=1024k count=3072 mkswap -f /swapfile swapon /swapfile vi /etc/fstab #在文件最后加入下面这行 开机启用 /swapfile swap swap defaults 0 0 |
可以使用free命令查看创建的swap分区。
8.安装
C++
1 |
make install |
9.然后替换老的gcc文件
C++
1 2 3 4 5 6 7 8 |
mv /usr/bin/gcc /usr/bin/gcc4.4.7 ln -s /usr/local/bin/gcc /usr/bin/gcc 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++ |
10.替换老的c++.so文件
C++
1 2 |
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查找是否已经加入了新的库进去