Linux操作系统目前一般自带的GCC4.8.5或者4.9.2等等,相对比较老的版本,当然随着操作系统版本升级,可能会加入一些pre-build-in的高级版本。有些功能的支持需要在GCC的或者G++的高级版本才有的支持,比如之前我们用的AVX512的指令集在GCC5.4.0才支持的比较好。

下面简单看下怎么升级

1. 下载安装包

可以去GNU网站上下载你想要的版本:Index of /gnu/gcc

我们这里以目前的最新版本GCC9.2.0为例,拉取并解压

wget http://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.gz
tar -xvf gcc-9.2.0.tar.gz

2. 下载依赖

cd gcc-9.2.0/
./contrib/download_prerequisites

下载需要的时间长一点,可以稍等会。

但是可能会提示有些包校验失败,这个比较尴尬,比如这样的错误

Cannot verify integrity of possibly corrupted file gmp

我们需要手动下载包,然后build安装:

Index of /pub/gcc/infrastructure

我手动安装了gmp、mpc、mpfr、isl这4个包,可以根据提示自己安装。

安装方法很简单,以mpc为例

wget http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
tar -xvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure
make
sudo make install

最后一步,大家注意一下用sudo,有些系统你可能没有权限把包放到lib下面。按照上面的方法依次按照需要的包即可。

3. 创建一个编译目录

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

4. 编译并安装

sudo make -j4
sudo make install

编译的时候提示找不到libisl.so.15,但是已经在/usr/local/lib里面存在了,这个就很尴尬,网上查了一下,这个make对应的Makefile是去/usr/lib里面去找的,没有找/usr/local/lib这个目录,我们可以把libisl.so.15这些对应的文件都copy过去,也可以直接建一个软链,这里我们简单一点,直接用soft link。

isl - gcc unable to find shared library libisl.so - Stack Overflow

sudo ln -s /usr/local/lib/libisl.so.15 libisl.so.15

再次执行make就不会报错了,但是编译时间实在是长。之后查看GCC版本为9.2.0了

$ gcc --version
gcc (GCC) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

5. 关联库

默认情况下,这个库会安装到/usr/local/lib64下面,而且代码引用的时候,会自动找libstdc++.so.6,这个是一个软链接,知道我们安装的包上的。可以通过ls -l 或者你安装了ll的也可以用ll命令。

-rw-r--r-- 1 root staff 45407954 Sep 23 21:57 libstdc++.a
-rw-r--r-- 1 root staff 12002194 Sep 23 21:57 libstdc++fs.a
-rwxr-xr-x 1 root staff      905 Sep 23 21:57 libstdc++fs.la
-rwxr-xr-x 1 root staff      965 Sep 23 21:57 libstdc++.la
lrwxrwxrwx 1 root staff       19 Sep 23 21:57 libstdc++.so -> libstdc++.so.6.0.27
lrwxrwxrwx 1 root staff       19 Sep 23 21:57 libstdc++.so.6 -> libstdc++.so.6.0.27
-rwxr-xr-x 1 root staff 17730016 Sep 23 21:57 libstdc++.so.6.0.27

你可以通过如下命令查看GLIBCXX的版本情况。

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

如果你的最新的库没有被关联到libstdc++.so.6上,可以做一下软链接,当然降版本也可以这么做。

$ sudo rm -rf /usr/local/lib64/libstdc++.so.6
$ sudo ln -s /usr/local/lib64/libstdc++.so.6.0.27 /usr/local/lib64/libstdc++.so.6

这个时候你就可以正常使用最新版本的C++了。

当然有些系统会默认从/usr/lib64下面去找C++,你可以把库和软链接copy过去重新做软链接就好了。

6. CXX多版本切换

安装了多个版本,怎么切换到之前的版本呢,而且在安装kaldi的时候发现多版本有个坑,大概是build和link用的是不同版本的CXX。这个时候我们需要强行修改,命令很简单,我们先来查看我们的g++版本,可以在命令行里输入g++,然后按tab键就会列出来所有的可执行g++文件,当然你也可以用whereis g++查看g++的位置,但是可能有一个是软链接。然后指定CXX的特定g++。比如我安装的情况如下:

g++      g++-4.9

用whereis g++返回结果如下,我这里g++是9.2.0版本

$ whereis g++
g++: /usr/bin/g++ /usr/local/bin/g++

设置版本为g++-4.9方式如下:

$ CXX=g++-4.9

然后你再编译的时候,会发现用的都是g++-4.9了。

参考地址:LiveToolkit

Linux安装GCC 9.2.0相关推荐

  1. linux安装 gcc 7.2.0,centos7 安装 gcc-6.2.0

    1. 下载 gcc-6.2.0 源码包,可以直接从 GCC 的FTP 上下载,随后解压 并从 contrib/download_prerequisites 文件内查看需要的依赖包 [root@node ...

  2. linux安装 gcc 7.2.0,CentOS 7 安装 gcc 9.2.0 最新版 | 24K PLUS

    yum 源里最新的 gcc 版本是 4.8.5,但很多时候安装软件依赖于更高版本的 gcc,这时候只能通过手动源码安装最新版. 使用源码编译安装gcc耗时非常大,请要有耐心等待,耐心等待,耐心等待,重 ...

  3. Ubuntu Linux 安装 GCC Compiler

    Ubuntu Linux 安装 GCC Compiler Auto-Configuration Error: Cannot find gcc or CC; either correct your pa ...

  4. linux安装gcc编译器

    转载:http://www.jb51.net/LINUXjishu/15460.html 分两种情况: 先看这篇转过来的文章,俺老孙懒得写了. Linux软件安装通用思路 在Linux系统中,软件安装 ...

  5. redhat linux 安装 gcc编译器

    分两种情况: 先看这篇转过来的文章,俺老孙懒得写了.  Linux软件安装通用思路 在Linux系统中,软件安装程序比较纷繁复杂,不过最常见的有两种: 1)一种是软件的源代码,您需要自己动手编译它.这 ...

  6. redhat linux安装gcc编译器

    Linux软件安装通用思路 在Linux系统中,软件安装程序比较纷繁复杂,不过最常见的有两种: 1)一种是软件的源代码,您需要自己动手编译它.这种软件安装包通常是用gzip压缩过的tar包(后缀为.t ...

  7. Redhat linux 安装 gcc编译器,Gcc源码包,rpm包安装方法!

    点评:分两种情况: 先看这篇转过来的文章,俺老孙懒得写了. Linux软件安装通用思路 在Linux系统中,软件安装程序比较纷繁复杂,不过最常见的有两种: 1)一种是软件的源代码,您需要自己动手编译它 ...

  8. 即兴操作:详解Linux安装GCC方法-------------------------这操作很简单搞一波试试看

    详解Linux安装GCC方法 起锅烧油先准备七个包配置文件以便于查看 上传http-2.4.25.tar.gz软件包到/opt目录下 解压压缩包 修改配置文件 修改配置文件并启动服务 inux中访问h ...

  9. linux csh 安装,linux安装gcc的shell脚本

    原标题:linux安装gcc的shell脚本 GCC是GUN Compiler Collection的简称,除了编译程序之外,它还含其他相关工具,它能把易于人类使用的高级语言编写的源代码构建成计算机能 ...

  10. linux安装gcc命令步骤(centos安装gcc命令)

    linux安装gcc命令步骤(centos安装gcc命令) >一.前言 本文介绍在CentOS7.8系统下使用YUM升级GCC版本的相关操作步骤. CentOS7默认安装的gcc版本是4.8版本 ...

最新文章

  1. AI时代数据之争,我们需要什么样的“数据权”?
  2. leetcode 136. Single Number
  3. https://www.threatminer.org/domain.php?q=blackschickens.xyz ——域名的信誉查询站点 还可以查IP...
  4. Byte Cup 2018机器学习大赛进入冲刺阶段,最全资料帮你快速上手!
  5. 工程代码_特征工程学习,19 项实践 Tips!代码已开源!
  6. 搜狗浏览器也可以直接安装Chrome插件,太棒了
  7. 用 Go 语言,做 Web 编程开发
  8. eclipse中文版界面设置黑色_硬核干货总结IDEA开发的26个常用设置
  9. XnSay临时网盘程序v1.0全开源
  10. 《数据安全警示录》一书修订版出版
  11. java aop管理权限_基于spring aop 权限管理系统原型 - andyj2ee - BlogJava
  12. 云计算遇上区块链,会产生怎样的能量和火花?
  13. 多段图的动态规划算法(C/C++)
  14. 在SQL中用正则表达式替换html标签
  15. oracle 11g查隐含参数,oracle隐含参数修改与查看
  16. C#通过WebBrowser对网页截图
  17. 离散化 Gym 101964E Fishermen
  18. diy计算机工作站,程序猿 篇一:迟到的 618 攒机实录:自建巨硬工作站
  19. 六边形3d立体缩放动画js特效
  20. PCFG CKY句法分析

热门文章

  1. GTK真不容易,资料少,学得人也少!
  2. 深度学习图像分类(二):AlexNet
  3. python unpack 到数列_842. 将数组拆分成斐波那契数列(Python)
  4. android 预优化oat_Android内存优化大盘点
  5. Python的动态特性(类实例增加属性,动态变量类型)
  6. python2和python3中的unicode
  7. apache-apollo Dockfile 镜像制作
  8. NodeMCU(ESP8266) 接入阿里云物联网平台 踩坑之旅
  9. 你有多自律,就有多自由
  10. PHP简单留言板代码