GCC源码编译

一.介绍

  1. GCC:全称GNU Compiler Collection,GNU编译器套件。是一款可以用来编译C、C++、Objective-C、Fortran、Java等多种 语言的编译器。由于在ubuntu-18.04-LTS版本中gcc版本为gcc-7.4.0,版本比较低。截止该文章之前GNU已经发布了gcc-9.1.0版本,我们以最新的gcc-9.1.0为例,编译出最新的gcc编译器。
  2. 系统环境:ubuntu-18.04-LTS
  3. 前期依赖库:apt-get install bison flex m4 build-essential libmpc-dev gcc gcc-multilib (编译最新的gcc依赖老的gcc编译器)

二.GCC依赖的三个源码库

  1. gmp (gcc编译依赖的三个库,源码编译)
  2. mpc
  3. mpfr

二.GCC源码和依赖项源码准备

  1. gcc官网:https://gcc.gnu/
    由于官网在国外,下载速度较慢,我们此处选择第二种方式下载源码
  2. 清华镜像站:https://mirrors.tuna.tsinghua.edu/
    2.1 我们选择到清华的镜像站上下载最新的gcc源码:https://mirrors.tuna.tsinghua.edu/gnu/gcc/gcc-9.1.0/
    2.2 选择gcc-9.1.0.tar.gz 这个源码包下载
    2.3 解压:tar -xzvf gcc-9.1.0.tar.gz
  3. gmp源码下载:https://mirrors.tuna.tsinghua.edu/gnu/gmp/
    3.1 选择gmp-6.1.2.tar.bz2版本
    3.2 将源码解压到gcc-9.1.0目录下:tar -xjvf gmp-6.1.2.tar.bz2
    3.3 将gmp-6.1.2目录名重命名为gmp,编译时会根据这个目录名将gmp库也编译一遍
  4. mpc源码下载:https://mirrors.tuna.tsinghua.edu/gnu/mpc/
    4.1 选择mpc-1.1.0.tar.gz版本
    4.2 将源码解压到gcc-9.1.0目录下:tar -xzvf mpc-1.1.0.tar.gz
    4.3 将mpc-1.1.0目录名重命名为mpc (也可选择创建软链接这个方式 )
  5. mpfr源码下载:https://mirrors.tuna.tsinghua.edu/gnu/mpfr/
    5.1 选择mpfr-4.0.2.tar.gz版本
    5.2 将源码解压到gcc-9.1.0目录下:tar -xzvf mpfr-4.0.2.tar.gz
    5.3 将mpfr-4.0.2目录名重命名为mpfr

编译

  1. cd gcc-9.1.0
  2. ./configure --prefix=/opt/gcc-9.1.0 --enable-checking=release --enable-bootstrap --enable-languages=c,c++ --enable-bootstrap (配置编译选项)
  3. make -j8 (8核心编译,加快编译速度)
  4. make install (安装编译好的可执行文件和库)
  5. 安装成功,对于系统上存在的两个版本gcc,可为新版gcc设置软链接解决冲突

参数解释:

  1. –prefix=/opt/gcc-9.1.0 (指定安装路径)
  2. –enable-checking=release (增加编译过程中的一些检查)
  3. –disable-multilib ( 取消多目标库编译,取消32位库编译,在64位机器上默认为enable-multilib)
  4. –enable-languages=c,c++ (编译器支持编译的语言)
  5. –enable-bootstrap (进行冗余的编译检查工作)

更多推荐

gcc源码编译