参考:
升级GCC版本到8.3(多GCC版本共存)
安装GCC-8.3.0及其依赖
自己编译gcc遇到的小问题cannot find crt1.o
cmake: symbol lookup error: cmake: undefined symbol: archive_write_add_filter_zstd 两种解决方法
前言:
工作环境下, 升级了库, 因为对编译器版本有要求, 所以需要手动安装下, CentOS yum 不能直接下载对应版本的gcc, 比起Ubuntu还是麻烦不少
下载gcc
镜像库:
http://mirrors.nju.edu.cn/gnu/gcc/gcc-8.3.0/
github:
https://github.com/gcc-mirror/gcc
git clone --branch releases/gcc-8.3.0 https://github.com/gcc-mirror/gcc.git
解压下载文件
tar xzf gcc-8.3.0.tar.gz
gcc编译前需要先安装依赖库
cd gcc-8.3.0
./contrib/download_prerequisites
这里会自动下载依赖库
配置
./configure --prefix=/usr/local/gcc-8.3.0 --enable-bootstrap --enable-languages=c,c++ --enable-threads=posix --enable-checking=release --disable-multilib --with-system-zlib --build=x86_64-linux
具体配置选项详见Installing GCC: Configuration
编译
make -j4
-j 多核编译, 我买的是2核, 设置为4, 可以加快下编译速度
看到这个说明编译成功
安装
sudo -s
make install
一定要root权限, 不然可能会因为权限不足安装失败
安装好的路径就是.configure 设置的路径
检查是否安装成功
显示系统默认自带的
gcc -v
显示自己安装的
cd /usr/local/gcc-8.3.0/bin
./gcc -v
配置环境
vim ~/.bashrc
增加路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc-8.3.0/lib64
export PATH=/usr/local/gcc-8.3.0/bin:$PATH
wq 保存退出
source ~/.bashrc
gcc -v
gcc 版本切换成功
遇到的问题
主要是编译的时候遇到没有安装需要的库导致失败
问题1
检查有没有本地是否安装了g++
发现并没有, 先安装g++
yum install gcc-c++
如果没有gcc版本要求, 直接这么下载安装就行了, 这个下载永远是最新的
问题2
缺少zlib库
yum install zlib-devel
问题3
缺少lbzip2
yum install bzip2
问题4
gcc报错, 内存太小导致, make -j核心减少