发新帖

Deepin上通过Git源码安装GCC任何版本的方法(GCC-9实践)

hh5blxj / 2020-3-28 21:42
浏览: 509 / 回复: 0
查看: 509|回复: 0

Deepin上通过Git源码安装GCC任何版本的方法(GCC-9实践)

[复制链接]
收藏
跳转到指定楼层
本帖最后由 hh5blxj 于 2020-3-28 21:49 编辑

安装GCC可以通过多种途径,例如:
1)通过apt-get install直接安装GCC某个版本,这个最简单。
2)通过某个源下载源码安装。
     官方(选择比较接近的日本源):http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-9.3.0/
     国内:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.3.0/
3)通过Git来下载源码安装。
     好处:可以安装各种版本,同时可以随时通过Git保持源码是最新的。


前面1)和2)都已经在论坛中有各种分享了,我这里就分享下第3)种方法。3)跟2)安装部分都是一样,只是3)可以随时看到gcc code的变化。

第一步)关联清华的gcc git库,也可以关联国内其他镜像网站的gcc git库
具体可以参考:https://mirrors.tuna.tsinghua.edu.cn/help/gcc.git/
>> git clone https://mirrors.tuna.tsinghua.edu.cn/git/gcc.git

第二步) 进入下载到的gcc文件
>> cd gcc
>> git branch
* master
可以看到当前是处于master上面,我们不需要安装最新master上面的版本,只需要安装某个release的branch code。
我们先看看有哪些branch

>> git branch -a
  ......

  remotes/origin/releases/gcc-4.9
  remotes/origin/releases/gcc-5
  remotes/origin/releases/gcc-6
  remotes/origin/releases/gcc-7
  remotes/origin/releases/gcc-8
  remotes/origin/releases/gcc-9
  ......
上面省略号部分是各种不同的branch,由于我们只需要安装gcc-9的最新代码,所以我们先切换到branch gcc-9上面

>> git checkout releases/gcc-9
切换之后,当前目录下的源码也变成了最新的gcc-9下的代码。

>> git branch
  master
* releases/gcc-9
接下来的是编译和安装,我这里写下我的安装过程,如果已经会源码安装的同学可以忽略下面内容。

>> sudo apt-get install flex
flex和yacc是编译器做词法分析的,在我安装的过程中,提示需要这个,否则会报错,所以我们提前安装好了。(参考:https://www.cnblogs.com/cyanrose/p/11490979.html)

>> vi ./contrib/download_prerequisites
这个脚本是用来检测是否依赖满足,同时会下载几个文件。但是有个问题在于,在国内去通过这个脚本下载内容太慢了,会报错。建议修改base_url就好了。
就直接修改为上面我提到的官方日本的源(国内的我还没有看到infrastructure,有的话欢迎提供,我会更新),base_url='http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/'
(参考:https://blog.csdn.net/davidhopper/article/details/79681695)

>> sudo bash ./contrib/download_prerequisites
可能由于网速的关系,你即使修改了base_url,运行可能会报错,直接删除掉下载好的内容,然后再次运行。我运行了三次才成功。

>> ./configure --disable-multilib
后面加上--disable-multilib的原因是因为我的是64位的系统,没有32位的库。你可以不加上这个选项,然后报错了再加上就好了。

>> sudo make -j 8
如果你按照前面所说安装了flex,在deepin里面运行上面命令应该不会报错。如果没有安装flex,安装报错了,请再安装了flex,同时记住在编译之前,必须先clean掉之前编译的内容。比如:sudo make realclean 然后再./configure --disable-multilib,最后再sudo make -j8
上面安装很耗时间,看你的CPU性能,我的是i5u系列,花了接近1小时

>> sudo make install

第三步)查看是否成功

>> gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.3.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure --disable-multilib
Thread model: posix
gcc version 9.3.1 20200328 (GCC)

>> g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.3.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure --disable-multilib
Thread model: posix
gcc version 9.3.1 20200328 (GCC)

如果你想安装其他版本,直接git checkout 到任意版本的任意时间的code都可以,希望能够帮助到你。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 返回版块 返回顶部