手动编译升级
在安装之前请确保自己的linux系统有足够的虚拟内存(建议1G)
增加swap虚拟内存
- 获取安装包并解压
地址是:
http://ftp.gnu.org/gnu/gcc/
https://mirrors.ustc.edu.cn/gnu/gcc/(国内)
解压缩
tar -jxvf gcc-9.1.0.tar.bz2
或则
tar -zxvf gcc-9.1.0.tar.gz
这两个版本选择下载时的版本进行不同的解压操作
2.下载供编译需求的依赖项
编译gcc 需要
[GMP](https://gmplib.org/),
[MPFR](http://www.mpfr.org/),
[MPC](http://www.multiprecision.org/)
我们可以执行安装包里面的脚本去安装
cd gcc-9.1.0
./contrib/download_prerequisites
如果不成功可以手动下载依赖
yum install gmp-devel // 編譯依賴此庫
yum install mpfr-devel // 編譯依賴此庫
yum install libmpc-devel // 編譯依賴此庫
当然以上库可以在ftp://gcc.gnu.org/pub/gcc/infrastructure/下载
isl 选择安装(我执行./contrib/download_prerequisites成功,没有安装这个文件)
下载isl-0.18.tar.bz2 // yum 没有这个库源码安装
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2
tar -jxvf isl-0.18.tar.bz2
cd isl-0.18
./configure
make
make install
- 建立一个目录供编译出的文件存放
mkdir gcc-build-9
cd gcc-build-9
4.编译安装
yum groupinstall "Development Tools"
yum install glibc-static libstdc++-static(这两个是必要的开发环境)
../configure --prefix=/usr/local/gcc9 --enable-languages=c,c++,go --disable-multilib // 指定gcc9安裝地址,指定所需安裝語言,不支持32位
make -j4 (-j4选项是make对多核处理器的优化,如果不成功请使用 make,相关优化选项可以移步至参考文献[2]。建议不要使用make -j来编译,虽然可以缩短编译时间,但极大可能会编译失败)
make install((安装需要root权限!))
5.删除旧的gcc和g++
rm -f /usr/bin/gcc
rm -f /usr/bin/g++
- 链接新的gcc和g++
ln -s /usr/local/gcc9/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc9/bin/g++ /usr/bin/g++
7.更新libstdc++
通过 ls -lrt /usr/lib64/libstdc++.so.6 可以看到不是链接我们最新的libstdc++.so.6.0.26
删除
rm -f /usr/lib64/libstdc++.so.6
更新
ln -s /usr/local/lib64/libstdc++.so.6.0.26 /usr/lib64/libstdc++.so.6
8.测试
#include <iostream>
#include <algorithm>
#include <string_view>
int main()
{
std::string str = " trim me";
std::string_view v = str;
v.remove_prefix(std::min(v.find_first_not_of(" "), v.size()));
std::cout << "String: '" << str << "'\n"
<< "View : '" << v << "'\n";
}
编译
g++ -o test.out test.cpp -std=c++17
运行
./ test.out
输出
String: ' trim me'
View : 'trim me'
gdb 记得升级
原文链接:
CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
Centos7升级gcc学习笔记
利用yum 升级(目前能升级到7.3)
yum install centos-release-scl -y
yum install devtoolset-7 -y
scl enable devtoolset-7 bash
gcc --version
注释:
在centos的devtoolset库中 最新的为 devtoolset-7,所以我们以后可以自己改数字安装最新的版本
scl enable devtoolset-7 bash 如果使用的是zsh则使用
scl enable devtoolset-7 zsh
如果不知道什么是zsh那么默认的就好了
附上:centos 镜像地址