GNU Mirror List

查看动态库版本

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

查找gcc生成的最新动态库

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

一、升级 gcc:

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 libcurl-devel texinfo

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
#备份
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
mv /usr/lib64/libstdc++.so /usr/lib64/libstdc++.so.bakmv /usr/bin/gcc /usr/bin/gcc485
mv /usr/bin/g++ /usr/bin/g++485
mv /usr/bin/c++ /usr/bin/c++485
mv /usr/bin/cc /usr/bin/cc485#创建新软连
ln -s /usr/local/gcc-10.2.0/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc-10.2.0/bin/g++ /usr/bin/g++
ln -s /usr/local/gcc-10.2.0/bin/c++ /usr/bin/c++
ln -s /usr/local/gcc-10.2.0/bin/gcc /usr/bin/ccln -s /usr/local/gcc-10.2.0/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6
ln -s /usr/local/gcc-10.2.0/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so
# 验证
gcc --version

方法二:

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# 第2种 执行安装软件自带的脚本,可以写入启动脚本中
source /opt/rh/devtoolset-x/enable #x为要启用的版本。
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.5ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gccmv /usr/bin/g++ /usr/bin/g++-4.8.5ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++gcc --versiong++ --version

二、升级 gdb

下载镜像

2.1 获取

wget https://ftp.gnu.org/gnu/gdb/gdb-8.3.1.tar.gz

2.2 编译

cd gdb-8.3.1/
./configure
make -j4
make install

建议在安装gcc前,先装gdb的升级,gdb的升级不能用太高版本的gcc编绎,或者在编绎时指定低版本的gcc。
CC=/usr/local/gcc/bin/gcc ./configure

三、升级 cmake

install

3.1 获取CMake源码包

 wget https://cmake.org/files/v3.16/cmake-3.16.9.tar.gz

3.2 解压

tar xvzf cmake-3.16.9.tar.gz

3.3 编译安装

cd cmake-3.16.9/
./bootstrap --prefix=/usr/local/cmake
make -j4
# 卸载旧版本
yum remove cmake -ymake install

3.4 配置

vi /etc/profile
#增加一行:
export PATH=$PATH:/usr/local/cmake/bin

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

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

一、GNU Make

GNU Make官网

DOC

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_cast,typeinfo类等
初始化列表:定义了template initializer_list

常见错误:

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

g++ --versiongcc --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位兼容包,解决办法:

Ubuntu:sudo apt-get install libc6-dev-i386

CentOS:yum -y install glibc-devel.i686

3 Linux中Rust 报错linker ‘cc’ not found

  1. 是因为 gcc 没有装

  2. 还有一种情况就是软链接被移除,
    重新建立软链接

ln -s gcc cc

4、Rust编译libclang错误

错误:thread ‘main’ panicked at 'Unable to find libclang: "the libclang shared library at /usr/lib64/clang-private/libclang.so.7 could not be opened
解决:

$ rpm -qa | grep "llvm-private"
$ rpm -e --nodeps llvm-private-7.0.1-1.el7.x86_64
$ yum install -y clang llvm

错误:thread ‘main’ panicked at 'libclang function not loaded: clang_getTranslationUnitTargetInfo. This crate requires that libclang 3.9 or later be installed on your system, clang版本过低了,centos 7默认是3.4
解决:

$ yum install llvm-toolset-7
$ scl enable llvm-toolset-7 bash #激活clang并检查版本,clang相关依赖已经全部安装了

LLVM架构

深入理解 LLVM架构

centos7 升级 gcc 版本相关推荐

  1. centos7升级gcc版本,无需手动下载源码编译

    centos7升级gcc版本,无需手动下载源码编译 第一步: 安装centos-release-scl 第二步: 安装devtoolset 第三步: 激活对应的devtoolset 第四步: 查看版本 ...

  2. linux centos7 升级gcc版本 使用 yum centos-release-scl devtoolset-8-gcc* 非源码编译

    目录 第一步: 安装centos-release-scl 第二步: 安装devtoolset 第三步: 激活对应的devtoolset 第四步: 查看版本 切换gcc版本 直接替换旧的gcc Cent ...

  3. 【linux】centos7 升级gcc版本

    参考 https://www.cnblogs.com/lzpong/p/5755678.html

  4. 利用 scl 为 CentOS 升级 gcc 版本

    利用 scl 为 CentOS 升级 gcc 版本 (一)背景 在搞 dpvs 期间遇到的一个问题,在编译 dpdk 程序时会根据所在服务器的 cpu 所拥有的指令集,为了尽可能提高程序效率,将较新的 ...

  5. Mac中使用port升级gcc版本

    Mac中使用port升级gcc版本 Mac OS中的gcc版本可能不会满足实际使用要求,需要对其升级. 这里介绍使用port方式来升级gcc版本.Macports是Mac OS中的软件包管理工具. 首 ...

  6. 关于如何升级gcc版本及相关的标准库问题

    关于如何升级gcc版本及相关的标准库问题 文章目录 关于如何升级gcc版本及相关的标准库问题 第一大步:先升级gcc 第二大步:更新标准库(libstdc++.so.6) 第一大步:先升级gcc (这 ...

  7. 【国产化系列】银河麒麟V10系统上升级gcc版本

    DATE: 2021.10.15 文章目录 1.前言 2.参考 3.gcc源码下载 4.gcc7.5.0安装步骤 4.1.安装依赖 4.2.configure 4.3.make 1.前言 银河麒麟V1 ...

  8. 红帽linux 下qt 5.13.1 编译 mysql80驱动(内含升级gcc版本)

    前言: 本地一台redhat linux虚拟机已经安装了qt5.13.1以及mysql80 详细的安装流程可通过如下链接查看 linux 安装qt    安装mysql 在qt的数据库编程阶段,需要对 ...

  9. linux下升级g 版本,linux下升级gcc版本(gcc-7)

    ubuntu16.04的自带gcc版本为gcc-5,因为安装pl-slam的需要升级到gcc-7,可以通过以下命令查看你的gcc版本 gcc --version 通过apt工具对gcc进行升级 sud ...

最新文章

  1. iOS网络-NSURLSessionDataTask大文件离线断点下载
  2. 如何利用遗传算法进行自变量降维(代码部分)
  3. 如何制作在线参考手册
  4. java创建solr core_Solr定义core.properties
  5. netpref 使用_使用PrefView监测.NET程序性能(二):Perfview的使用
  6. Windows基础评测
  7. mysql-bin.index找不到_MySQL不能启动 mysql-bin.index' not found (Errcode: 13)
  8. 睡眠音频分割及识别问题(六)--输入输出及方案讨论
  9. 字符串获取类、封装检测数字的方法
  10. php字符集转换,php字符集转换
  11. pandas python2_Python随笔 | Pandas入门(二)
  12. mysql数据库设置索引 以下_如何设置MySQL数据库表的索引总长度
  13. spring boot jpa SQL语句注意事项
  14. 扫雷游戏网页版_《我的世界》简单的两款小游戏 带你回味和同学在电脑课上的时光...
  15. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制 (转)
  16. 智慧交通:数智化地铁大屏管控运维平台
  17. 2021牛客暑期多校训练营10 F.Train Wreck(栈,并查集,优先队列,贪心)
  18. 关于菜鸟的圆通电子面单打印
  19. Row was updated or deleted by another transaction or unsaved-value mapping was incorrect解决
  20. 【 vue 】局部样式与全局样式

热门文章

  1. 【附源码】Python计算机毕业设计天气预报系统
  2. 使用Python自动化Microsoft Excel和Word
  3. 【附源码】计算机毕业设计JAVA仟侬堂茶具网站
  4. 企业微信公众号自定义消息模板
  5. python 读取特定一段文本_python提取文本内容 python读取文本每行指定内容
  6. MySql按条件插入数据,MySQL插入语句写where条件,MySQL在插入时做幂等
  7. 公司图纸文档如何管理?图纸管理软件选择方案:
  8. 16位汇编程序使用递归完成阶乘求解
  9. 2022icpc 济南站 持续补题
  10. 一些非常炫的Android特效源码