Linux系列讲解 —— Ubuntu18.04安装gcc 9.1.0(C++17)
目录
- 1. 下载gcc 9.1.0源码压缩包
- 2. 解压缩包
- 3. 检查并配置源码编译的环境
- 5. 编译gcc源码
- 6. 安装gcc
- 7. 使用update-alternatives管理本地多个版本的gcc和g++
- 7.1 查看本地安装了哪几个gcc程序
- 7.2 update-alternatives中安装本地所有版本gcc
1. 下载gcc 9.1.0源码压缩包
国内镜像地址:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.1.0/
2. 解压缩包
将压缩包放到一个目录下(本例为~/myproject/gcc),然后解压
sun@sun-pc:~/myproject/gcc$ tar -zxvf gcc-9.1.0.tar.gz
...
sun@sun-pc:~/myproject/gcc$ ls
gcc-9.1.0 gcc-9.1.0.tar.gz
3. 检查并配置源码编译的环境
执行自带的configure即可
sun@sun-pc:~/myproject/gcc$ mkdir build #创建个目录专门用于存放编译文件等
sun@sun-pc:~/myproject/gcc$ cd build
sun@sun-pc:~/myproject/gcc/build$ ../gcc-9.1.0/configure
sun@sun-pc:~/myproject/gcc/build$ ls
config.log config.status Makefile serdep.tmp #成功后可以看到生成了Makefile文件
注: 如果configure执行失败,报错如下
checking build system type... x86_64-pc-linux-gnu
...
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
...
提示有三个库找不到,分别是GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+
进入gcc源码目录,使用download_prerequisites脚本下载安装缺失的库,如下:
sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ ./contrib/download_prerequisites
如果上面的download_prerequisites命令由于网络超时导致下载失败,这里提供两个方法解决:
方法1:可以尝试更改download_prerequisites的url,然后重新执行download_prerequisites
#base_url='ftp://gcc.gnu.org/pub/gcc/infrastructure/' base_url='http://mirror.linux-ia64.org/gnu/gcc/infrastructure/'
方法2:直接浏览器访问http://mirror.linux-ia64.org/gnu/gcc/infrastructure/下载gmp-6.1.0.tar.bz2,mpfr-3.1.4.tar.bz2,mpc-1.0.3.tar.gz(其他版本只要大于提示的GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+都可以),然后解压后做好链接
sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ tar -jxvf gmp-6.1.0.tar.bz2 sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ tar -zxvf mpc-1.0.3.tar.gz sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ tar -jxvf mpfr-3.1.4.tar.bz2 sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ ls ... gmp-6.1.0 mpc-1.0.3 mpfr-3.1.4 ... #解压后生成的三个目录 sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ ln -s gmp-6.1.0 gmp sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ ln -s mpc-1.0.3 mpc sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ ln -s mpfr-3.1.4 mpfr
5. 编译gcc源码
sun@sun-pc:~/myproject/gcc/build$ make -j8
6. 安装gcc
使用下面命令进行安装,默认的可执行文件安装路径为/usr/local/bin/
,默认的库安装路径为/usr/local/lib/
sun@sun-pc:~/myproject/gcc/build$ sudo make install
Tips:
usr的全称:Unix System Resource
7. 使用update-alternatives管理本地多个版本的gcc和g++
如果本地有多个版本的gcc,可以考虑用update-alternatives进行管理
下面只讲解gcc配置过程,之后记得把g++也配置一下
7.1 查看本地安装了哪几个gcc程序
#查看gcc的可执行文件及库文件位置,可以看到有两处
sun@sun-pc:~$ whereis gcc
gcc: /usr/bin/gcc /usr/lib/gcc /usr/local/bin/gcc /usr/local/lib/gcc /usr/share/man/man1/gcc.1.gz
#/usr/bin/gcc是原先安装的7.5.0版本
sun@sun-pc:~$ ls -l /usr/bin/gcc
lrwxrwxrwx 1 root root 5 5月 21 2019 /usr/bin/gcc -> gcc-7#/usr/local/bin/gcc是本次安装的9.1.0版本
sun@sun-pc:~$ ls -l /usr/local/bin/gcc
-rwxr-xr-x 3 root root 7111040 8月 21 14:33 /usr/local/bin/gcc#使用gcc命令查看版本,可以看到是9.1.0,说明终端里执行的程序是/usr/local/bin下的gcc
sun@sun-pc:~$ gcc --version
gcc (GCC) 9.1.0
Copyright © 2019 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
问:为什么gcc命令默认是执行的/usr/local/bin/gcc,而不是/usr/bin/gcc ?
答:看下图,终端的环境变量中,/usr/local/bin在/usr/bin之前,所以优先执行/usr/local/bin下的程序。
7.2 update-alternatives中安装本地所有版本gcc
先切换到root用户,然后执行下面命令分别将两个版本的gcc配置到update-alternatives列表中。
1. 配置gcc 7.5.0到update-alternatives列表
root@sun-pc:~# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 1
update-alternatives: 使用 /usr/bin/gcc-7 来在自动模式中提供 /usr/bin/gcc (gcc)2. /usr/local/bin/gcc和gcc命令名字冲突,配置gcc 9.1.0之前先更改一下/usr/local/bin/gcc的名字
root@sun-pc:~# mv /usr/local/bin/gcc /usr/local/bin/gcc-9
root@sun-pc:~# update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc-9 2
update-alternatives: 使用 /usr/local/bin/gcc 来在自动模式中提供 /usr/bin/gcc (gcc)
至于具体如何使用请查看Linux系列讲解 —— 本地软件版本管理工具update-alternatives,此处就不在详述了。
/usr/local/bin/gcc需要改名的原因:
上面7.1提到过会优先执行/usr/local/bin下的gcc,如果不改名,在终端输入gcc命令时,系统先在/usr/local/bin/下找到了gcc,那么就会执行这个路径的gcc,而不会执行/usr/bin下的符号链接gcc。那么update-alternatives更换gcc链接路径也就没有意义了。
Linux系列讲解 —— Ubuntu18.04安装gcc 9.1.0(C++17)相关推荐
- Ubuntu18.04 安装搭建 hadoop-3.3.0 集群
Ubuntu18.04 安装搭建 hadoop-3.3.0 集群 参考博文:https://blog.csdn.net/sunxiaoju/article/details/85222290?ops_r ...
- Ubuntu18.04 安装Asterisk16.10 + FreePBX15.0
Ubuntu18.04 安装Asterisk16.10 + FreePBX15.0 1.首先需要先更新一下ubuntu的apt源 cp /etc/apt/sources.list /etc/apt/s ...
- ubuntu18.04安装gcc详细步骤(附问题集)
首先是下载gcc包,可以在GCC的官方网站GCC, the GNU Compiler Collection- GNU Project 下载到各个版本. 目前最高版本是gcc-8.2.0. 一.在安装g ...
- 【Linux】43.ubuntu18.04安装搜狗输入法不能正常使用
对于某些电脑,直接下载最新的搜狗输入法,是不能在ubuntu18.04上直接使用的.但是老版本的可以使用,我自己测试使用这个版本的搜狗可以直接使用:sougoupinyin_2.4.0.2732_am ...
- Ubuntu18.04 安装 gcc
在Ubuntu18.04下安装gcc的指令: sudo add-apt-repository ppa:unbutu-toolchain-r/test sudo apt-get update sudo ...
- cadence virtuoso为什么只能在linux下运行,ubuntu18.04安装cadence virtuoso
最近需要做一些集成电路设计相关的工作,研究了一下,还挺复杂.不过千里之行,始于足下,再复杂的东西也是一步步由简单的东西构建而成的.根据工作需要 ,安装了全定制集成电路设计软件IC617,下面记录一下过 ...
- Ubuntu18.04安装gcc
为了能够在Ubuntu系统上添加新存储库和安装软件包,您必须以具有sudo权限的用户身份登录. 在Ubuntu上安装GCC 默认的Ubuntu存储库包含一个名为build-essential的元包,它 ...
- Ubuntu18.04 安装opencv 3.2.0 ,opencv3.4.15
1. 源码 https://github.com/opencv/opencv 2. 安装依赖 sudo apt-get install build-essential sudo apt-get ins ...
- Ubuntu18.04安装配置OpenCv4.1.0
1. 安装依赖项 请确保ubuntu已经安装了g++, cmake, make, wget, unzip,vim若没有安装,则使用以下命令安装依次执行: sudo apt install -y g++ ...
最新文章
- java 数组集合转换_Java 实例 – 集合转数组
- healpy的安装(包括healpix)
- UIBarButtonSystemItem 各种款式
- Spring源码由浅入深系列一 简介
- 从零写一个编译器(一):输入系统和词法分析
- mutli-lane情况
- idea2020代码el组件红色波浪线_Android实现炫酷的ViewPager3D组件
- javascript学习之利用方向键控制div模块的移动
- 云服务器网站301重定向跳转有什么作用?
- c#变量初始化的学习
- java中将汉字转拼音,解决pinyin4j多音节问题
- 深入浅出Mybatis系列(五)Mybatis事务篇
- 使用 vue-waterfall2插件 vue 瀑布流
- 回忆借你的曾经—致我们终将逝去的青春_伤感日志
- Linux网络——DNS域名解析服务
- matlab设计椭圆低通滤波器,【 MATLAB 】ellip 函数介绍(椭圆滤波器设计)
- 初识机器阅读理解(Machine Reading Comprehension)
- 程序员专属壁纸十七张
- Arthas开源一周年,Github Star 16K,我们一直在坚持什么?
- OPPO R9st怎么刷机 OPPO R9st的刷机教程 OPPO R9st完美解除账号锁