当前位置: 首页 > news >正文

编译GCC-12.1.0

GCC 版本默认标准C++11 支持C++14 支持C++17 支持C++20 支持C++23 支持
≤ 4.8C++98部分
4.9C++98大部分部分
5.xC++14✔️ 完整✔️ 完整草案支持
6.xC++14✔️ 完整✔️ 完整部分
7.xC++14✔️ 完整✔️ 完整大部分
8.xC++14✔️ 完整✔️ 完整✔️ 完整部分
9.xC++14✔️ 完整✔️ 完整✔️ 完整部分
10.xC++14✔️ 完整✔️ 完整✔️ 完整大部分
11.xC++17✔️ 完整✔️ 完整✔️ 完整大部分
12.xC++17✔️ 完整✔️ 完整✔️ 完整✔️ 完整部分
13.xC++17✔️ 完整✔️ 完整✔️ 完整✔️ 完整部分
≥ 14.xC++17✔️ 完整✔️ 完整✔️ 完整✔️ 完整部分

1. 准备必要的工具

GCC 南大 镜像

yum install -y gcc gcc-c++ make m4 bzip2

m4

  • 一个宏处理器。核心功能是读取文本输入,查找并展开其中定义的宏,生成处理后的文本输出。
  • 在源代码目录运行 ./configure 之前,通常需要先运行 autoreconf (或 autoconf, automake 等) 来生成 configure 脚本和其他必要的构建文件。autoreconf/autoconf 工具需要 M4 才能工作

若无m4, 执行make会报错

make: *** No targets specified and no makefile found.  Stop.

2. 编译安装依赖

查看需要的依赖

wget https://mirrors.nju.edu.cn/gnu/gcc/gcc-12.1.0/gcc-12.1.0.tar.gz
tar -zxvf gcc-12.1.0.tar.gz -C /root/src/
head -40 /root/src/gcc-12.1.0/contrib/download_prerequisites
gmp='gmp-6.2.1.tar.bz2'
mpfr='mpfr-4.1.0.tar.bz2'
mpc='mpc-1.2.1.tar.gz'
isl='isl-0.24.tar.bz2'base_url='http://gcc.gnu.org/pub/gcc/infrastructure/'echo_archives() {echo "${gmp}"echo "${mpfr}"echo "${mpc}"

有网环境下载

./contrib/download_prerequisites

离线下载地址

http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.2.1.tar.bz2
http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-4.1.0.tar.bz2
http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.2.1.tar.gz
http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.24.tar.bz2
文件源码存放位置依赖目标安装位置
gmp/root/src/gmp-6.2.1/root/server/gmp-6.2.1
isl/root/src/isl-0.24gmp/root/server/isl-0.24
mpfr/root/src/mpfr-4.1.0gmp/root/server/mpfr-4.1.0
mpc/root/src/mpc-1.2.1gmp 、 mpfr/root/server/mpc-1.2.1

2.1 安装gmp

GNU Multiple Precision Arithmetic Library

  • 核心能力: 大整数算术(加、减、乘、除、模、幂、位运算等)、大浮点数算术、有理数算术。
tar -jxf gmp-6.2.1.tar.bz2 -C /root/src/gmp-6.2.1
cd /root/src/gmp-6.2.1
./configure --prefix=/root/server/gmp-6.2.1
make -j8 && make install

2.2 安装isl

Integer Set Library

  • 核心能力: 表示和操作线性约束下的整数集合、整数元组之间的仿射关系(映射)、依赖分析、调度计算。
tar -jxf isl-0.24.tar.bz2 -C /root/src/isl-0.24
cd ../isl-0.24
./configure --prefix=/root/server/isl-0.24 --with-gmp-prefix=/root/server/gmp-6.2.1/
make -j8 && make install

2.3 安装mpfr

GNU Multiple Precision Floating-Point Reliable Library

  • 高精度浮点数算术(所有基本运算、初等函数如 exp, log, sin, cos 等),严格按照指定的舍入模式(向最近、向零、向正无穷、向负无穷)进行运算
tar -jxf mpfr-4.1.0.tar.bz2 -C /root/src/mpfr-4.1.0
cd ../mpfr-4.1.0
./configure --prefix=/root/server/mpfr-4.1.0 --with-gmp=/root/server/gmp-6.2.1/
make -j8 && make install

2.4 安装mpc

GNU Multiple Precision Complex Library

  • 高精度复数算术(加、减、乘、除、幂等),实部和虚部的计算都遵循 MPFR 的精确舍入规则。
tar -zxf mpc-1.2.1.tar.gz -C /root/src/mpc-1.2.1
cd ../mpc-1.2.1
./configure --prefix=/root/server/mpc-1.2.1 --with-gmp=/root/server/gmp-6.2.1/ --with-mpfr=/root/server/mpfr-4.1.0/
make -j8 && make install

3. 安装GCC

3.1 临时库的路径(3.3配置永久)

export LD_LIBRARY_PATH=/root/server/gmp-6.2.1/lib:/root/server/isl-0.24/lib:/root/server/mpfr-4.1.0/lib:/root/server/mpc-1.2.1/lib:$LD_LIBRARY_PATH

3.2 编译&安装

cd /root/src/gcc-12.1.0/
./configure --prefix=/root/server/gcc_12.1.0 --with-gmp=/root/server/gmp-6.2.1/ --with-isl=/root/server/isl-0.24 --with-mpfr=/root/server/mpfr-4.1.0/  --with-mpc=/root/server/mpc-1.2.1 --disable-multilib
make -j8 && make install

3.3 配置环境变量

vi ~/.bashrc
export PATH=/root/server/gcc_12.1.0/bin:$PATH
export LD_LIBRARY_PATH=/root/server/gcc_12.1.0/lib64:/root/server/gmp-6.2.1/lib:/root/server/isl-0.24/lib:/root/server/mpfr-4.1.0/lib:/root/server/mpc-1.2.1/lib:$LD_LIBRARY_PATH

4. 安装过程中遇到的错误

环境变量LD_LIBRARY_PATH未生效

error while loading shared libraries: libisl.so.23: 
cannot open shared object file: No such file or directory

无m4,在使用.configure时会报错

checking for suitable m4... configure: error: No usable m4 in $PATH or /usr/5bin (see config.log for reasons).

若使用.configure未配置依赖位置如

./configure --prefix=/root/server/isl-0.24
  • 报错提示如下
configure: error: gmp.h header not found
http://www.dtcms.com/a/326556.html

相关文章:

  • Linux内核网络设备框架及其注册流程分析
  • Cursor 实用技巧与常见难题解析:从入门到进阶的技术实践
  • Pytest项目_day11(fixture、conftest)
  • OSPF IP FRR 理论和实验
  • 当C#遇上Notepad++:实现GCode可视化编辑的跨界实践
  • 3.数据类型和类型装换
  • Qt——实现”Hello World“、认识对象树与Qt坐标系
  • 用 Node.js 玩转 Elasticsearch从安装到增删改查
  • 月报 Vol.02:新增条件编译属性 cfg、#alias属性、defer表达式,增加 tuple struct 支持
  • 【前端插件】Code-Inspector-Plugin:重新定义前端开发的调试与协作体验
  • 【CSS 布局】告别繁琐计算:CSS 现代布局技巧(gap, aspect-ratio, minmax)
  • CobaltStrike的搭建与使用
  • 数字IC后端层次化Hierarchical Flow子系统Sub-System模块 block partition和pin assignment细节盘点
  • C++算法(数据结构)版
  • 《深度解构:React与Redux构建复杂表单的底层逻辑与实践》
  • 【软考架构】需求工程中,系统分析与设计的结构化方法
  • JavaEE 初阶第十七期:文件 IO 的 “管道艺术”(下)
  • C++11范围for循环:高效遍历新方式
  • Django ORM查询技巧全解析
  • 【LLM】OpenAI开源GPT级模型,120B及20B参数GPT-OSS
  • 如何在 Ubuntu 24.04 LTS Linux 上安装和使用 Flatpak
  • Oracle自动采集AWR Gets TOP SQL脚本
  • Spring Cloud 过滤器工厂
  • Go选手如何快速上手第三方库
  • 机器视觉的PCB板对位印刷加工应用
  • python—day1
  • U-Boot常用命令完全指南
  • 线程的同步与互斥
  • 基于深度学习的异常检测算法在时间序列数据中的应用
  • QT QProcess + xcopy 实现文件拷贝