Linux编译gcc 11和binutils
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相关推荐
- linux编译c++11的代码
C++11,(即ISO/IEC 14882:2011),是目前的C++编程语言的最新正式标准.它取代了第二版标准(第一版公开于1998年,第二版于2003年更新,分别通称C++98以及C++03,两者 ...
- linux编译gcc多久时间,Linux gcc编译参数说明
在linux中使用gcc编译程序时,若使用-g参数在程序中加入调试信息,则生成可执行文件的大小接近不加-g参数时的两倍. 1.-O,-O1: 这两个命令的效果是一样的,目的都是在不影响编译速度的前提下 ...
- Linux中GCC编译工具集中个软件的用途、gcc的简单编译以及ELF文件格式
文章目录 一.gcc编译工具集中各软件的用途 1.1 GCC 1.2 Binutils 1.3 C运行库 二.简单编译 2.1 代码编译过程 2.2 多个程序文件的编译 2.3 检错 2.4 库文件连 ...
- Linux系统怎么编译sin,linux下gcc编译sin函数出错的问题
linux下gcc编译sin函数出错的问题 收藏 Q: I keep getting errors due to library functions being undefined, but I'm ...
- Linux 的GCC的编译过程及方式
GCC的使用 文章目录 GCC的使用 前言 一.编译过程分析 二.Linux中的编译链接 1.1 预编译阶段 1.2 编译阶段 1.3 汇编阶段 1.4 链接阶段 1.5 补充 二.编译链接命令 三. ...
- 在Linux下gcc缺省编译,在Linux下GCC将文件合起来编译
大家用gcc懂得怎样将几个文件合来编译吗,如果不懂可以看一看,懂的请指点, 这个是老师上课的练习,目的是让我们熟悉怎样在linux的gcc下将文件合起来编译, 题目很简单的,就是输入一个浮点,然后平方 ...
- Linux中gcc的编译、静态库和动态库的制作
欢迎大家关注笔者,你的关注是我持续更博的最大动力 Linux中gcc的编译.静态库.动态库 文章目录: 1 gcc的编译过程 1.1 gcc的编译过程 1.2 gcc的常用参数 2 gcc 静态库的制 ...
- Linux基础——gcc编译、静态库与动态库(共享库)
Linux基础--gcc编译.静态库与动态库(共享库) https://blog.csdn.net/daidaihema/article/details/80902012 Linux基础--gcc编译 ...
- centos linux编译c,紧急提醒!Linux是如何编译C语言程序文件的?CentOS 8的gcc使用方法介绍...
一句话告诉你gcc怎么编译C文件 执行命令 gcc Tristone.c -o Tristone 解释:"Tristone.C"Tristone可执行文件编译,编译完成后&quo ...
最新文章
- mysql backlog_一次优化引发的血案
- Django和uwsgi,配合nginx做静态缓存
- GCC编译过程以及对应FILE文件表
- Android Studio运行报错:无法访问XXX......请删除该文件或确保该文件位于正确的类路径子目录中
- 【HTTP趣谈】origin,referer和host的区别
- 矢量合成和分解的法则_力的合成与分解
- 图的遍历算法【数据结构F】
- 【leetcode刷题笔记】Excel Sheet Column Number
- Akka 配置Dispatcher(一)
- 【笔记】JAVA SE
- Zabbix 3.0 安装部署
- python框架django教程_[Python] Django框架入门3——深入视图
- Python数据结构实战——队列(Queue)
- [rhel6.5]DHCP分配IP地址以及保留地址
- python点击按钮窗口之间跳转_PyQt5点击按钮,实现界面之间的跳转思路
- 形容计算机技术发展的词,形容技术发展的成语是什么_四字词语 - 成梦词典
- ubuntu浏览器突然使用不了搜狗拼音法
- 对应的服务器证书无效。控制台输入 showRequestInfo() 可以获取更详细信息
- 2022年终总结-知识沉淀、疫情、展望未来
- c# 中文转换为拼音或者拼音首字母