首页
版块
WIKI
按主题
按用户
语言:
中文
English
Deepin上通过Git源码安装GCC任何版本的方法(GCC-9实践)
主题专区
4244
次浏览 ·
1
个回复 ·
电梯直达
到第
楼
确定
hh5blxj
deepin
发表于 2020-03-29 05:42
楼主
本帖最后由 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都可以,希望能够帮助到你。
回复
点赞0
收藏
只看作者
所有回复
欢乐马
deepin
发表于 2024-09-01 02:18
沙发
这个和gcc-9-base 包有什么区别吗?
回复
点赞0
只看作者
请先
登录
账号再进行相关操作
精品汇总
换一批
【截图录屏】5月功能优化方案公示
deepin MCP 服务上线 !首个系统级MCP服务让你解放双手!
grub菜单显示不全的手动处理方法。
Q&A | deepin 25用户常见问题解答——磐石不可变系统篇
从NVMe硬盘节能导致的死机问题展开谈谈
玲珑是个什么宝,一个架构一次构建可跨系统运行的包格式
发布帖子
热帖排行
换一批
鸿蒙电脑真机,和deepin有些像,但将deepin还没实现的给实现了。
鸿蒙来了,竞争更激烈了,deepin要更加努力呀!
鸿蒙PC要发布了,UOS和麒麟的黑稿越来越多了
GXDE 2025 发布:支持从旧版升级,基于 Debian 13
好家伙,华为将系统文件夹基本上以中文命名。
我反映了2年的BUG,今天依旧在。。。
热门活动
查看更多
安装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都可以,希望能够帮助到你。