热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

gcc特定版本Linux源码编译安装(以gcc8.5.0为例)

0.确认基本编译工具已安装,退出其他管理环境下载基本编译工具:sudoaptinstallbuild-essential这会默认配置某一个版本的gc

0. 确认基本编译工具已安装,退出其他管理环境

下载基本编译工具:sudo apt install build-essential

这会默认配置某一个版本的gcc环境,后续编译新的gcc环境也需要它。

退出其他管理环境,如 conda

1. 下载所需版本源码

官方镜像站点目录
清华镜像地址
gcc-8.5.0.tar.gz CSDN下载

使用 tar -zxvf 文件名.tar.gz 进行解压,该解压后的文件夹之后称为 “gcc源码文件夹

2. 下载依赖包源码

不同版本gcc所需依赖库不尽相同,具体可以进入gcc源码文件夹中 contrib/download_prerequisites 文件中查看,如 gcc-8.5.0 的该文件中有以下内容:

gmp='gmp-6.1.0.tar.bz2'
mpfr='mpfr-3.1.4.tar.bz2'
mpc='mpc-1.0.3.tar.gz'
isl='isl-0.18.tar.bz2'base_url='ftp://gcc.gnu.org/pub/gcc/infrastructure/'

说明需要上述列出的4个依赖包,且下载地址如上所列,如果上述地址不好访问,可以手动修改到其他镜像地址,如:

base_url = 'http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/'

上述是日本镜像地址,暂时没有该地址的内地镜像。

如果网络不佳,可以手动下载上述依赖包到gcc源码文件夹之下(建议版本相同),这里提供两种下载方式:

  1. 访问 gnu 镜像地址,依次进入相应文件夹,选择对应版本下载,如访问 清华镜像地址 ,进入gmp文件夹,选择gmp-6.1.0.tar.bz2下载
  2. Gitee 地址

下载好后在gcc源码文件夹中执行命令./contrib/download_prerequisites查看是否安装完好,正常将会输出以下内容:

gmp-6.1.0.tar.bz2: OK
mpfr-3.1.4.tar.bz2: OK
mpc-1.0.3.tar.gz: OK
isl-0.18.tar.bz2: OK
All prerequisites downloaded successfully.

如果有如下报错,可能是压缩软件不全所致:

tar (child): lbzip2: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

只需执行 sudo apt install bzip2 即可。(CentOS系统执行 sudo yum install bzip2 )

此命令不仅会检查依赖包,还会同时解压、生成依赖包的软链接,如果没有执行此步,可以手动解压,并添加软链接,软链接名字为不带版本号的名字。 例如对 gmp-6.1.0 解压并生成软链接:

  1. 进入gcc源码文件夹,执行tar -vxf gmp-6.1.0.tar.bz2 解压,生成文件夹 gmp-6.1.0
  2. 执行ln -s gmp-6.1.0 gmp 生成名为gmp的软链接。


3. 编译安装gcc


3.1 创建build文件夹

进入gcc源码文件夹,创建build文件夹并进入:mkdir build && cd build

需要说明,build 文件夹并不是必须创建,但为了将编译生成的中间文件与源码文件隔离开,若是编译失败至少不会打乱源码内容,不得已时也可直接删除 build 文件夹,因此一般都建议单独创建一个文件夹并在其中进行编译。


3.2 配置编译方式

配置编译方式:../configure --prefix=/opt/gcc-8.5.0 --enable-languages=c,c++ --disable-multilib

其中 --prefix 指定gcc安装位置,可以自定义,如上述命令将在/opt下创建gcc-8.5.0文件夹并安装于此处。

–enable-languages 指定gcc支持的语言

–disable-multilib 表示不生成交叉编译器(如果均在一种架构平台上编译并运行,如x86上,则无需交叉编译器)

3.3 使用make编译并安装

sudo make -j8 && sudo make install

其中 -j8 表示 8线程同时编译,可以根据机器配置自行设置。

4. 使用update-alternatives将其配置为默认gcc工具

update-alternatives 是通过软链接实现的一款非常方便地软件版本管理工具。

首先将 gcc-8.5.0 注册其中:

sudo update-alternatives --install /usr/bin/gcc gcc /opt/gcc-8.5.0/bin/gcc 100 --slave /usr/bin/g++ g++ /opt/gcc-8.5.0/bin/g++ --slave /usr/bin/gcov gcov /opt/gcc-8.5.0/bin/gcov

此时查看并配置 gcc 版本,update-alternatives --config gcc,会显示如下:

There is only one alternative in link group gcc (providing /usr/bin/gcc): /opt/gcc-8.5.0/bin/gccNothing to configure.

即目前只注册了一个 gcc 版本,无需配置,再将系统本身的gcc注册其中(以gcc-11为例):

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 80 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-11 --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-11 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-11

再查看并配置 gcc 版本,sudo update-alternatives --config gcc

显示如下:

There are 2 choices for the alternative gcc (providing /usr/bin/gcc).Selection Path Priority Status
------------------------------------------------------------
* 0 /opt/gcc-8.5.0/bin/gcc 100 auto mode1 /opt/gcc-8.5.0/bin/gcc 100 manual mode2 /usr/bin/gcc-11 80 manual mode&#xfeff;Press <enter> to keep the current choice[*], or type selection number:

只需在终端交互中输入相应的序号即可切换 gcc版本。&#xff08;0是auto mode&#xff0c;会自动选择优先级最高的版本&#xff09;


>>> update-alternatives 基本命令参数使用
--install 用于注册某个软件
  第一个参数表示注册到的位置&#xff0c;第二个参数表示在此管理工具下这个软件的名称&#xff0c;第三个参数表示优先级&#xff08;数字越大优先级越高&#xff09;&#xff0c;第四个参数表示软件的实际位置
--slave 用于设置和该软件依赖的其他软件&#xff0c;当改变软件版本时其依赖的软件版本也会相应改变
  slave的参数与 install 基本一致&#xff0c;只是没有优先级设置的参数
--display 用于查看软件的各种版本、优先级和依赖
  后接一个参数&#xff0c;指定软件名
--list 用于查看软件各版本的实际安装位置
  后接一个参数&#xff0c;指定软件名


推荐阅读
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
author-avatar
常奕尧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有