概述
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复