我是靠谱客的博主 温暖雪糕,最近开发中收集的这篇文章主要介绍Linux编译gcc 11和binutils1. 前言2. 编译gcc,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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和binutils1. 前言2. 编译gcc的全部内容,希望文章能够帮你解决Linux编译gcc 11和binutils1. 前言2. 编译gcc所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部