1. 前言

系统自带的gcc版本太低,闲来无聊手动编译一下新版本的gcc。编译环境为Deepin v20.5,内核为5.15.24,本文所示编译方法同样适用其它Debian/Ubuntu的衍生系统。

binutils包含ld、as、ar等工具,如果需要升级这些软件可以编译binutils。

2. 编译gcc

因为gcc依赖gmp、mpfr、mpc所以,需要先编译这三个库。

2.1 准备工作

2.1.1 源码下载

分别下载gcc、gmp、mpfr、mpc官方地址如下:

Index of /gnu/gcc

Index of /gnu/gmp

Index of /gnu/mpfr

Index of /gnu/mpc

2.1.2 安装依赖

# 安装系统默认版本的gcc和g++
sudo apt install gcc g++ make

2.2 编译安装

各软件的版本号可以选择最新的,示例中的版本是当时最新的。gcc编译耗时比较久可以使用全部线程,其余的使用4个线程,具体使用多少线程编译视情况而定。

# 编译gmp
./configure --prefix=/usr/local/gmp-6.2.1
make -j4
sudo make install
sudo ln -s /usr/local/gmp-6.2.1 /usr/local/gmp# 编译mpfr
./configure --prefix=/usr/local/mpfr-4.1.0
make -j4
sudo make install
sudo ln -s /usr/local/mpfr-4.1.0 /usr/local/mpfr# 编译mpc
./configure --prefix=/usr/local/mpc-1.2.1 --with-mpfr=/usr/local/mpfr
make -j4
sudo make install
sudo ln -s /usr/local/mpc-1.2.1 /usr/local/mpc# 编译gcc
./configure --prefix=/usr/local/gcc-11.3.0 \
--with-gmp=/usr/local/gmp \
--with-mpfr=/usr/local/mpfr \
--with-mpc=/usr/local/mpc
make -j`nproc`
sudo make install
sudo ln -s /usr/local/gcc-11.3.0 /usr/local/gcc

安装完成后可以将路径/usr/local/gcc/bin加入到环境变量PATH。

2.3 多版本控制

系统中已经有旧版本的gcc,可以不用卸载,可以使用update-alternatives对cc和c++命令做个多版本控制,默认的优先级是20,这里设置为30。

sudo update-alternatives --install /usr/bin/cc cc /usr/local/gcc/bin/gcc 30
sudo update-alternatives --install /usr/bin/c++ c++ /usr/local/gcc/bin/g++ 30# 查看cc
update-alternatives --display cc

2.4 软链接替换

对于libstdc++.so.6软连接的替换需要谨慎,如果操作不当恢复很麻烦。

# 替换旧版本gcc的软连接
sudo ln -sf /usr/local/gcc/bin/gcc /usr/bin/gcc# 替换旧版本g++的软连接
sudo ln -sf /usr/local/gcc/bin/g++ /usr/bin/g++# 替换旧版本libstdc++标准库的软链接,这里需要谨慎
sudo ln -sf /usr/local/gcc/lib64/libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

3. 编译binutils

3.1 准备工作

3.1.1 源码下载

官方源码地址如下:

Binutils- GNU Project - Free Software Foundation

3.1.2 安装依赖

sudo apt --no-install-recommends install texinfo

3.2 编译安装

./configure --prefix=/usr/local/binutils-2.38
make -j`nproc`
sudo make install
sudo ln -s /usr/local/binutils-2.38 /usr/local/binutils

安装完成后可以将路径/usr/local/binutils/bin加入到环境变量。

Linux编译gcc 11和binutils相关推荐

  1. linux编译c++11的代码

    C++11,(即ISO/IEC 14882:2011),是目前的C++编程语言的最新正式标准.它取代了第二版标准(第一版公开于1998年,第二版于2003年更新,分别通称C++98以及C++03,两者 ...

  2. linux编译gcc多久时间,Linux gcc编译参数说明

    在linux中使用gcc编译程序时,若使用-g参数在程序中加入调试信息,则生成可执行文件的大小接近不加-g参数时的两倍. 1.-O,-O1: 这两个命令的效果是一样的,目的都是在不影响编译速度的前提下 ...

  3. Linux中GCC编译工具集中个软件的用途、gcc的简单编译以及ELF文件格式

    文章目录 一.gcc编译工具集中各软件的用途 1.1 GCC 1.2 Binutils 1.3 C运行库 二.简单编译 2.1 代码编译过程 2.2 多个程序文件的编译 2.3 检错 2.4 库文件连 ...

  4. Linux系统怎么编译sin,linux下gcc编译sin函数出错的问题

    linux下gcc编译sin函数出错的问题 收藏 Q: I keep getting errors due to library functions being undefined, but I'm ...

  5. Linux 的GCC的编译过程及方式

    GCC的使用 文章目录 GCC的使用 前言 一.编译过程分析 二.Linux中的编译链接 1.1 预编译阶段 1.2 编译阶段 1.3 汇编阶段 1.4 链接阶段 1.5 补充 二.编译链接命令 三. ...

  6. 在Linux下gcc缺省编译,在Linux下GCC将文件合起来编译

    大家用gcc懂得怎样将几个文件合来编译吗,如果不懂可以看一看,懂的请指点, 这个是老师上课的练习,目的是让我们熟悉怎样在linux的gcc下将文件合起来编译, 题目很简单的,就是输入一个浮点,然后平方 ...

  7. Linux中gcc的编译、静态库和动态库的制作

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 Linux中gcc的编译.静态库.动态库 文章目录: 1 gcc的编译过程 1.1 gcc的编译过程 1.2 gcc的常用参数 2 gcc 静态库的制 ...

  8. Linux基础——gcc编译、静态库与动态库(共享库)

    Linux基础--gcc编译.静态库与动态库(共享库) https://blog.csdn.net/daidaihema/article/details/80902012 Linux基础--gcc编译 ...

  9. centos linux编译c,紧急提醒!Linux是如何编译C语言程序文件的?CentOS 8的gcc使用方法介绍...

    一句话告诉你gcc怎么编译C文件 执行命令 gcc Tristone.c  -o Tristone 解释:"Tristone.C"Tristone可执行文件编译,编译完成后&quo ...

最新文章

  1. mysql backlog_一次优化引发的血案
  2. Django和uwsgi,配合nginx做静态缓存
  3. GCC编译过程以及对应FILE文件表
  4. Android Studio运行报错:无法访问XXX......请删除该文件或确保该文件位于正确的类路径子目录中
  5. 【HTTP趣谈】origin,referer和host的区别
  6. 矢量合成和分解的法则_力的合成与分解
  7. 图的遍历算法【数据结构F】
  8. 【leetcode刷题笔记】Excel Sheet Column Number
  9. Akka 配置Dispatcher(一)
  10. 【笔记】JAVA SE
  11. Zabbix 3.0 安装部署
  12. python框架django教程_[Python] Django框架入门3——深入视图
  13. Python数据结构实战——队列(Queue)
  14. [rhel6.5]DHCP分配IP地址以及保留地址
  15. python点击按钮窗口之间跳转_PyQt5点击按钮,实现界面之间的跳转思路
  16. 形容计算机技术发展的词,形容技术发展的成语是什么_四字词语 - 成梦词典
  17. ubuntu浏览器突然使用不了搜狗拼音法
  18. 对应的服务器证书无效。控制台输入 showRequestInfo() 可以获取更详细信息
  19. 2022年终总结-知识沉淀、疫情、展望未来
  20. c# 中文转换为拼音或者拼音首字母

热门文章

  1. 2023数学教师必备软件TOP5
  2. iview 表格时间格式化
  3. react-infinite-scroller组件滚动分页加载
  4. Symbian(塞班移动手机)
  5. layui 的简单使用
  6. Oracle SCN详解
  7. 如何用计算机装手机系统,如何用手机给电脑重装系统
  8. SCAPY官方教程三
  9. [NLP]自然语言理解概述
  10. 小学计算机第二课堂内容,小学科学第二课堂活动记录