Debian 10.12编译安装GCC7.4.0 教程 -理论通用版


教程环境

系统为:Debian10.12,其他操作系统大同小异,只是在包管理器命令以及包名上有微小差异

安装方式为:最小化安装

本教程全程使用root用户操作

GCC源码准备

阿里镜像源地址:https://mirrors.aliyun.com/gnu/

GCC阿里云镜像地址:https://mirrors.aliyun.com/gnu/gcc/

大学镜像:

http://mirror.hust.edu.cn/gnu/gcc/
http://mirrors.nju.edu.cn/gnu/gcc/
http://mirrors.ustc.edu.cn/gnu/gcc/
https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/

选择你要的GCC版本版本,下载后会得到一个压缩包,解压并进入解压文件夹

apt-get install -y wget
wget https://mirrors.aliyun.com/gnu/gcc/gcc-7.4.0/gcc-7.4.0.tar.gz
#gz文件
tar -zxvf gcc-7.4.0.tar.gz
#xz文件
tar -jxvf gcc-7.4.0.tar.xz

编译环境准备

更新源(非更新软件)

apt-get update

安装gcc环境:编译gcc需要gcc环境,编译好后会覆盖之前装的版本,可用于安装指定版本的gcc或者升级/降级gcc

apt-get install -y gcc g++
  • 输入 gcc -v有版本信息输出则说明安装成功,g++同理

Debian 10.12编译安装GCC7.4.0 教程 -理论通用版

安装make编译工具环境以及依赖

apt-get install -y automake autoconf libtool make
  • 输入make -v有版本信息输出则说明安装成功

补充:build-essential 包是C语言的开发包,包含了gcc、make、gdb和libc函数库等很多工具,后面学习JVM虚拟机的时候看到的,前面出问题可以选择安装这个包

GCC依赖环境安装

方式一

最简单的解决方案是使用download_prerequisites脚本将GMP,MPFR,MPC和ISL源代码添加到GCC源代码树,这将导致GCC自动为您构建它们,并静态链接到它们。

在gcc解压后的文件夹内输入

./contrib/download_prerequisites

gcc自带脚本会解决所有依赖,包括下载、配置、连接等。如果你这一步非常顺利,最后屏幕输出

All prerequisites downloaded successfully.则说明配置完成。

但如果中途出了什么问题,请自行百度,因为我输入这条命令后半天一点动静都没有,科学也好,换源也好,都没用。

方式二

根据方式一中的文件,找到依赖包的信息,自行编译安装链接,适合无网络环境

得到依赖包信息,在gcc解压后的文件夹内输入

cat contrib/download_prerequisites

在文件的头部你会得到如下信息,这就是gcc的依赖包以及版本信息

Debian 10.12编译安装GCC7.4.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.16.1.tar.bz2′

gmp编译安装

目录地址:https://mirrors.aliyun.com/gnu/gmp/

下载并解压
wget https://mirrors.aliyun.com/gnu/gmp/gmp-6.1.0.tar.bz2
tar -jxvf gmp-6.1.0.tar.bz2
编译安装
cd gmp-6.1.0
./configure --prefix=/usr/local/gmp-6.1.0  --enable-cxx
make -j$(nproc)
make check
make install
  • make -j:j后跟CPU核心数量,越大越好,但是不要超过物理核心数量
    • make -j$(nproc) ,自动填写最大化核心数量
  • –prefix:指定安装路径
  • –enable-language:启动某项语言的支持
    • –enable-cxx:开启对C、C++的支持

makefile文件成功信息

Debian 10.12编译安装GCC7.4.0 教程 -理论通用版

make编译一旦出错,需要输入make cleanmake distclean清理上次编译的残留文件

链接共享库

将安装目录下的lib文件夹中的共享库链接到/usr/lib 中

ln -s /usr/local/gmp-6.1.0/lib/libgmp.so /usr/lib/libgmp.so.10

mpfr编译安装

目录地址:https://mirrors.aliyun.com/gnu/mpfr/

下载并解压
wget https://mirrors.aliyun.com/gnu/mpfr/mpfr-3.1.4.tar.bz2
tar -jxvf mpfr-3.1.4.tar.bz2
编译安装
cd mpfr-3.1.4
./configure --prefix=/usr/local/mpfr-3.1.4 --with-gmp=/usr/local/gmp-6.1.0
make
make check
make install
链接共享库
ln -s /usr/local/mpfr-3.1.4/lib/libmpfr.so /usr/lib/libmpfr.so
	ln -s /usr/local/mpfr-3.1.4/lib/libmpfr.so.4 /usr/lib/libmpfr.so.4
ln -s /usr/local/mpfr-3.1.4/lib/libmpfr.so.4.1.4 /usr/lib/libmpfr.so.4.1.4

  • –with-gmp:mpfr需要依赖gmp

mpc编译安装

目录地址:https://mirrors.aliyun.com/gnu/mpc/

下载并解压
wget https://mirrors.aliyun.com/gnu/mpc/mpc-1.0.3.tar.gz
tar -zxvf mpc-1.0.3.tar.gz
编译安装
cd mpc-1.0.3
./configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4
make
make check
make install
链接共享库
ln -s /usr/local/mpc-1.0.3/lib/libmpc.so /usr/lib/libmpc.so
ln -s /usr/local/mpc-1.0.3/lib/libmpc.so.3 /usr/lib/libmpc.so.3
ln -s /usr/local/mpc-1.0.3/lib/libmpc.so.3.0.0 /usr/lib/libmpc.so.3.0.0

isl编译安装

目录地址:http://www.mirrorservice.org/sites/sourceware.org/pub/gcc/infrastructure/

下载并解压
wget http://www.mirrorservice.org/sites/sourceware.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2
tar -jxvf isl-0.16.1.tar.bz2
编译安装
cd isl-0.16.1
./configure --prefix=/usr/local/isl-0.16.1 --with-gmp-prefix=/usr/local/gmp-6.1.0
make
make check
make install
  • 编译isl是需要依懒gmp库的,旧版本的isl编译选项为–with-gmp,新版本的isl编译参数为–with-gmp-prefix
  • 注意此处--with-gmp-prefix如果报configure: error: gmp.h header not found错误,则需要更改为--with-gmp-include=abs_dir_path加上--with-gmp-lib=abs_dir_path
链接共享库
ln -s /usr/local/isl-0.16.1/lib/libisl.so /usr/lib/libisl.so
ln -s /usr/local/isl-0.16.1/lib/libisl.so.15 /usr/lib/libisl.so.15
ln -s /usr/local/isl-0.16.1/lib/libisl.so.15.1.1 /usr/lib/libisl.so.15.1.1

GCC编译

为了避免编译产生的文件污染源代码文件夹,所以我们需要新建一个文件夹用来存放编译产物

cd gcc-7.4.0/
mkdir build
cd build
../configure  --enable-checking=release --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4 --with-mpc=/usr/local/mpc-1.0.3 --with-isl=/usr/local/isl-0.16.1
make
make install
  • –enable-languages:用于设定 GCC 编译器支持编译的编程语言的类别,例如 c、c++、java、objc、obj-c++、go 等。

  • gcc -v查看是否成功

原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/271436.html

(0)
上一篇 2022年7月4日
下一篇 2022年7月4日

相关推荐

发表回复

登录后才能评论