linux升级gcc版本详细教程

0.前言

一般linux操作系统默认的gcc版本都比较低,例如centos7系统默认的gcc版本为4.8.5。gcc是从4.7版本开始支持C++11的,4.8版本对C++11新特性的编译支持还不够完善,因此如果需要更好的体验C++11以及以上版本的新特性,需要升级gcc到一个较高的版本。

本文给出了linux系统中涉及国家gcc的操作步骤,供大家参考。

升级步骤可以大致分为下面四个步骤:

  • 查看确认原来的gcc版本

  • 下载需要升级的gcc版本

  • 下载新版本gcc需要的依赖

  • 编译并安装gcc新版本

  1. 查看确认gcc原来的版本

linux命令行中输入:

gcc --version

可以看到显示如下:

gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright © 2015 Free Software Foundation,Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。

一般很多linux系统默认的gcc版本为4.8.5,该版本对C++11的支持还不够完善,可以将版本升级到一个更高的版本。本文以升级到版本10.1.0为例。

  1. 下载需要升级的gcc版本并解压

2.1下载gcc新版本

由于linux系统没有外网,本文给出的示例是先在windows系统上将gcc版本下载,然后上传的linux系统中。

下载gcc新版本地址为:

http://ftp.gnu.org/gnu/gcc/

上面有很多gcc版本,需要自己需要的版本进行下载即可。

本文以版本10.1.0为例,点击红色部分,下载文件gcc-10.1.0.tar.gz

2.2 将gcc新版本上传到linux系统并解压

将下载好的gcc版本上传到linux系统中。本文将版本放在目录:

/opt2/test_other/debug_test/

进入到/opt2/test_other/debug_test/目录,将文件解压到/usr/local目录下面:

tar -zvxf gcc-10.1.0.tar.gz --directory=/usr/local/

解压之后可以在/usr/local目录下面看到解压后的gcc目录:

  1. 下载并gcc需要的依赖

3.1 查看gcc需要的依赖

cd 到gcc-10.1.0目录下面,查看需要的依赖:

vim contrib/download_prerequisites

可以看到需要的依赖以及版本如下:

从上面看到一共有四个依赖:gmp、mpfr、mpc以及isl。

3.2 下载需要依赖

在安装gcc新版本之前一定要先下载这几个依赖(注意依赖的版本)。

依赖下载的地址:

https://gcc.gnu.org/pub/gcc/infrastructure/

下载好4个依赖之后,将文件上传到linux系统的目录/opt2/test_other/debug_test/下面。

3.3 将依赖解压到目录gcc-10.1.0

cd到/opt2/test_other/debug_test/目录下面,用下面命令将gmp文件解压到目录gcc-10.1.0:

tar -jvxf gmp-6.1.0.tar.bz2 --directory=/usr/local/gcc-10.1.0/

用同样的命令可以将isl-0.18.tar.bz2、mpfr-3.1.4.tar.bz2解压到目录gcc-10.1.0。

下面的命令将mpc-1.0.3.tar.gz解压到目录gcc-10.1.0:

tar -zvxf mpc-1.0.3.tar.gz --directory=/usr/local/gcc-10.1.0/

3.4 为新下载的依赖建立软链接

cd到gcc-10.1.0目录下面,依次执行下面四个命令,为四个依赖创建软链接:

ln -sf gmp-6.1.0 gmp
ln -sf isl-0.18 isl
ln -sf mpc-1.0.3 mpc
ln -sf mpfr-3.1.4 mpfr

在目录gcc-10.1.0下面查看建立的软连接:

ls -l | grep ^l

如果上面的软连接建立成功,会看到下面四个链接文件,显示如下:

  1. 编译并安装gcc

4.1 编译并安装

在目录gcc-10.1.0下面依次执行下面两个命令:

mkdir build && cd build 
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib 

如果上面的命令执行正确,可以看到生成的makefile文件。上述命令执行完成之后,build下面可以看到下面几个文件:

config.log config.status Makefile serdep.tmp

注意在执行上面的第二个configure命令时,也可以通过prefix参数为新版本gcc指定安装安装目录(如果没有指定默认为/usr/local/,这里本文没有指定):

../configure --prefix=/usr/local/gcc-10.1.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib

然后在build目录下面执行的命令,编译安装gcc:

make -j4 && make install

该过程时间比较漫长,大约需要2小时以上,需要耐心等待。如果编译安装过程没有报错,最后一段打印大概是这样:

4.2 更新gcc

上面的过程执行完,如果你在linux命令行中输入:gcc -version,你会发现显示的还是原来的版本,这是因为gcc还没有更新,执行的还是原来的gcc命令。

原来的gcc命令位于目录/usr/bin/gcc等目录下面,为了不覆盖原来的命令。将原来的相关内容进行备份处理,执行如下命令:

mv /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
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak

安装的gcc新版本位于/usr/local/bin目录下面,需要为新版本gcc创建软链接:

ln -s /usr/local/bin/gcc /usr/bin/gcc
ln -s /usr/local/bin/g++ /usr/bin/g++
ln -s /usr/local/bin/c++ /usr/bin/c++
ln -s /usr/local/bin/gcc /usr/bin/cc
ln -s /usr/local/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6

上面的步骤步骤完成之后,输入gcc -v查看版本:

可以看到版本已经变成安装的最新版本10.1.0了,说明安装成功。

【参考文章】

  1. https://www.jb51.net/article/95974.htm

  1. https://www.jb51.net/article/230581.htm

  1. https://cloud.tencent.com/developer/article/1424725

  1. https://blog.csdn.net/liyelool/article/details/118656509

原文地址:https://blog.csdn.net/weixin_43354152/article/details/129247408

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、信号(signal)、消息队列、共享内存、信号量、套接字(socket)。管道用于具有亲缘关系的进程间通信,有名管道的每个管道具有名字,使没有亲缘关系的进程间也可以通信。信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别对整个系统的性能做统计,而进程级别则具体到进程,为每个进程维护统计信息。

按实现原理分,可分为基于计数器和跟踪以及剖析。含义如下:

计数器:内核维护的统计数据,通常为无符号整型,用于对发生的事件计数,比如,网络包接收计数器,磁
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书验证,详细追踪整个交互过程,可用于调用网络后端接口,诊断http和https网络服务故障。
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满、fd泄漏等问题。命令包括ping、fping、tcpdump、lsof、netstat、/proc/$pid/fd、du、grep、traceroute、dig。
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的进程数目,用uptime查看到负载很高,既有可能是CPU利用率高,也可能是大量在等待io的进程导致,用mpstat查看每个CPU的使用情况,查看CPU的使用率或者CPU花在等待io的时间,接着用pidstat定位具体的进程
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线程切换及中断切换,进程切换的开销较大,除了需要保存寄存器和程序计数器中的值还需保存全局变量、栈等到内存中,以便下次运行恢复,而同一进程中的线程切换开销会小很多,只需更新寄存器和线程独有的栈,共享资源如打开的文件、全局变量等无需切换,当硬件中
1.top命令 作用:该命令可以按CPU使用.内存使用和执行时间对任务进行排序,常用来监控系统中占用CPU或内存较高的程序及CPU和内存的负载。 默认视图: 当想看系统负载时,可观察汇总的%CPU中的us用户进程和sy系统进程是否占用CPU很高,相加接近100%就说明占用很高了,有些程序可能得不到及
文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限!!!粘滞位!!!超详解!!!
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Windows、Linux、MacBook_mack book 安装qt
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Linux——了解操作系统的发展历史以及初次体验Linux编程环境
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,个人学习时很认真的记录的,觉得好的麻烦点个赞。
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.5p1(亲测无问题,建议收藏)_openssh_9.5p1
文章浏览阅读3.5k次,点赞93次,收藏78次。初识Linux中的线程,理解线程的各种概念,理解进程地址空间中的页表转换,介绍pthread线程库并理解线程库!
文章浏览阅读863次。出现此问题为Linux文件权限问题,解决方案为回到引擎目录执行命令。输入用户密码后运行./UnrealEditor。_increasing per-process limit of core file size to infinity.
文章浏览阅读2.9k次。使用文本编辑器:打开CSV文件,并使用文本编辑器(如Notepad++、Sublime Text、Visual Studio Code等)来查看文件的字符编码格式。通常在编辑器的底部状态栏或设置中可以找到当前编码的显示。请注意,上述方法并非绝对准确,特别是当文件没有明确的编码标识时。因此,如果你发现CSV文件在不同的工具或方法中显示不同的编码格式,可能需要进行进一步的分析和判断,或者尝试使用不同的编码转换方法。该命令将输出文件的MIME类型和编码信息。使用命令行工具:在命令行中,你可以使用。_shell读取csv文件逐行处理
本文介绍了如何在Linux系统中升级gcc版本,以便更好地支持C++11及以上版本的新特性。通过升级gcc,可以提升编译器的功能和性能,获得更好的开发体验。详细的步骤和方法请参考原文链接。
文章浏览阅读4.4k次,点赞6次,收藏19次。Mosquitto是一个开源的MQTT消息代理服务器。MQTT是一个轻量级的、基于发布/订阅模式的消息传输协议。 mosquitto的安装使用比较简单,可以方便的来进行一些测试。_linux mosquitto
文章浏览阅读7.2k次,点赞2次,收藏12次。Linux中,用于根目录下有一个.ssh目录,保存了ssh相关的key和一些记录文件。_~/.ssh/
文章浏览阅读4.5k次,点赞5次,收藏18次。首先需要安装 snmp ,使用下面的命令进行安装安装完毕之后,使用下面的命令查看是否安装成功当命令行显示如图即为安装成功。_snmp工具