centos7 升级 gcc 版本

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

查看动态库版本

strings /usr/lib64/libstdc++.so.6 | grep 'CXXABI'

查找gcc生成的最新动态库

find / -name "libstdc++.so*"

方法一

1、查看当前gcc版本

#默认4.8.5
g++ -v 或者 gcc --version

2、下载gcc源码10.2.0

wget https://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz

3、解压安装包

tar -xvf gcc-10.2.0.tar.xz

4、下载依赖库

cd gcc-10.2.0
./contrib/download_prerequisites

5、安装系统必须包模块

yum install -y gcc-c++ libstdc++-static ant cmake byacc flex automake libtool binutils-devel bison ncurses-devel gcc kernel-devel libtool libatomic

6、生成Makefile文件

./configure --prefix=/usr/local/gcc-10.2.0 --enable-bootstrap --enable-languages=c,c++ --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib

7、编译

make -j4

8、安装

make install

9、配置libstdc++.so

查看libstdc++.so

find / -name "libstdc++.so*"

在这里插入图片描述

进入libstdc++.so配置目录

 cd /usr/lib64
#将新的libstdc++.so 拷贝到目录下
cp /usr/local/gcc-10.2.0/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.28 .

#备份
mv libstdc++.so.6 libstdc++.so.6.old

#创建新软连
ln -sv libstdc++.so.6.0.28 libstdc++.so.6

10、配置环境变量

# 卸载老版本 4.8.5
yum remove gcc gcc-c++

#进入根目录
cd ~

# 编辑当前用户环境变量
vim .bash_profile

# 内容
PATH=$PATH:$HOME/bin:/usr/local/bin/
export CC=/usr/local/bin/gcc
export CXX=/usr/local/bin/g++

#立即生效
source ~/.bash_profile

# 验证
gcc --version

GNU Make

GNU Make

configure 配置选项

-help

输出帮助信息.即使是有经验的用户也偶尔需要使用使用’–help’选项,因为一个复杂的项目会包含附加的选项.例如,GCC包里的’configure’脚本就包含了允许你控制是否生成和在GCC中使用GNU汇编器的选项.

–prefix=$Home/cdvs_bin_for_arm

这里是最终生成可执行文件的安装目录也就是exe的存放目录。可以根据自己的需要调整。

libstdc++

libstdc++GCC对 C++ Standard Library 的实现。

libc++clang的实现。

libsupc++libstdc++的子集可以在github找到libsupc++它是libstdc++的一个子文件夹
在这里插入图片描述
libsupc++包含C++最核心的一部分功能比如

内存分配operator new, operator delete等
异常处理
run-time type information (RTTI)dynamic_casttypeinfo类等
初始化列表定义了template initializer_list

常见错误

1、xgcc: fatal error: cannot execute ‘cc1plus’: execvp: No such file or directory

g++ --version

gcc --version

没有版本号的话下载

有的话

运行

find / -name "cc1plus"  

在这里插入图片描述
添加到环境变量

export PATH="$PATH:/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/"

2、 /usr/include/gnu/stubs.h:7:11: fatal error: gnu/stubs-32.h: No such file or directory
64位linux 提示这个问题
这个问题是由于缺少32位兼容包解决办法

Ubuntusudo apt-get install libc6-dev-i386

CentOSyum -y install glibc-devel.i686

方法二

https://mirrors.aliyun.com/centos-vault/7.5.1804/sclo/x86_64/rh/

https://mirrors.aliyun.com/centos/7.9.2009/sclo/x86_64/rh/Packages/d/

CentOS 7官方源的gcc最新版本是4.8.5发布于2015年年代久远且不支持c++14。要编译c++14及以上项目必须要升级现有版本或者安装高版本的gcc。红帽其实已经编译好了高版本的gcc但未更新到base和epel这两个常用源中而是将这些版本放在scl中。
在这里插入图片描述
在这里插入图片描述
##列出GCC版本
yum list |grep devtoolset |grep gcc.x86_64

在这里插入图片描述

1、安装centos-release-scl

sudo yum install centos-release-scl

2、 安装devtoolset

注意如果想安装7.版本的就改成devtoolset-7以此类推

sudo yum install devtoolset-8*

3、 激活对应的devtoolset

所以你可以一次安装多个版本的devtoolset需要的时候用下面这条命令切换到对应的版本

scl enable devtoolset-8 bash
gcc -v

这条激活命令只对本次会话有效重启会话后还是会变回原来的4.8.5版本要想随意切换可按如下操作
首先安装的devtoolset是在 /opt/rh 目录下的
每个版本的目录下面都有个 enable 文件如果需要启用某个版本只需要执行

source ./enable

4、 直接替换旧的gcc

旧的gcc是运行的/usr/bin/gcc

mv /usr/bin/gcc /usr/bin/gcc-4.8.5
 
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
 
mv /usr/bin/g++ /usr/bin/g++-4.8.5
 
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
 
gcc --version
 
g++ --version

gcc/g++ 头文件和库文件搜索路径

gcc/g++ 头文件和库文件搜索路径

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: centos

“centos7 升级 gcc 版本” 的相关文章