ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-07-04 02:00:17  阅读:359  来源: 互联网

标签:gcc gmp GCC7.4 lib -- make usr 通用版 10.12


教程环境

系统为: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++同理

安装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的依赖包以及版本信息

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文件成功信息

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查看是否成功

标签:gcc,gmp,GCC7.4,lib,--,make,usr,通用版,10.12
来源: https://www.cnblogs.com/tothk/p/16441498.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有