🔍 登录 注册

centos下升级gcc

大 大苹果 2023-12-03 linux 👁 37175 ⏱ 5min

1.先安装gmp,mpfr,mpc三个包

  • 安装gmp包:
wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
tar xvf gmp-6.1.2.tar.xz
cd gmp-6.1.2
./configure –prefix=/usr/local/gmp
make && make install
  • 安装mpfr包:
wget https://www.mpfr.org/mpfr-current/mpfr-4.0.1.tar.gz
tar xvf mpfr-4.0.1.tar.gz
cd mpfr-4.0.1
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
make && make install
  • 安装mpc包:
wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
tar xvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr
make && make install

将库文件加入如下文件:

vi /etc/ld.so.conf

增加以下三行

/usr/local/gmp/lib
/usr/local/mpfr/lib
/usr/local/mpc/lib

加完后使用如下命令更新

ldconfig -v

  • 源码安装gcc包:
wget ftp://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.gz
tar xvf gcc-6.4.0.tar.gz
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc
make -j2
make install

删除4.8版本,修改6.4版本的软链接
后续补充

三、安装过程中出现的问题及解决方法

1.. ../mpc/src/mul.c:error: conflicting types for ‘mpfr_fmma’

解决办法:

将mul.c内的所有mpfr_fmma函数改名为mpfr_fmma_mul,本人改动了三处地方

2.执行完1后在配置gcc时出现要求mpfr gmp mpc版本要求的错误时,在gcc目录下的config.log日志内如果有mpfr_add_one_ulp和mpfr_sub_one_ulp不存在的错误,需要修改mpfr下的mpfr.h,新增如下内容:

#define mpfr_add_one_ulp(x,r) \
(mpfr_sgn (x) > 0 ? mpfr_nextabove (x) : mpfr_nextbelow (x))
#define mpfr_sub_one_ulp(x,r) \
(mpfr_sgn (x) > 0 ? mpfr_nextbelow (x) : mpfr_nextabove (x))

本人安装过程中,主要参考了如下链接的文档:
https://www.cnblogs.com/milton/p/7653760.html
http://www.mamicode.com/info-detail-2258026.html

本文描述如何通过编译源码,来升级gcc编译版本,由于CentOs默认gcc编译版本太低不能满足需求。我通过自己的安装升级经验总结了一个shell脚本,整体时间大约在一个小时左右。

cd /usr/src/
vim upgradeGcc.sh
在upgradeGcc.sh中输入下面的内容

#!/bin/bash

#在非root账户下,使用sudo命令
#获取源码
#sudo wget http://mirrors.kernel.org/gun/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
wget http://mirrors.kernel.org/gun/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

#解压
#sudo tar -xvf gcc-7.3.0.tar.gz
tar -xvf gcc-7.3.0.tar.gz


cd gcc-7.3.0
#sudo ./contrib/download_prerequisites
./contrib/download_prerequisites
cd ..

#建立编译输出目录
#sudo mkdir gcc-build-7.3.0
mkdir gcc-build-7.3.0

#进入下面目录,执行命令,生成Makefile文件

cd gcc-build-7.3.0
#sudo ../gcc-7.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
../gcc-7.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
#执行命令进行编译,此处利用4个job,需编译时约40分钟,此值不宜设置过高


make -j4


#安装

make install

执行下面的命令,等待安装完成,等待时间可能有点长

chmod 777 upgradeGcc.sh
./upgradeGcc.sh

shell中的命令可以以脚本的方式执行,也可以以单条命令的方式执行。

检查版本

[root@promote ~]# g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.3.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-7.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 7.3.0 (GCC)

升级成功。

进行检测:

#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
     cout << "Hello world!" << endl;
     auto i = 10;
     cout << i << endl;
     return 0;
}

读完了?给作者一点支持

本文采用 CC BY 4.0 协议转载 · © 大苹果

评论(0)

登录 后参与评论。

  • 还没有评论,来抢沙发。

🔗 相关文章

Mysql 表被标记为崩溃,最后一次自动化修复失败

当 MySQL 日志中出现“表被标记为崩溃且自动修复失败”的提示时,通常表示 MySQL 在启动过程中检测到某个表的文件系统或存储引擎层出现了问题。这种情况通常会导致表无法正常使用,需要手动进行修复。以下是处理这种情况的一些步骤和方法: ### 1. **查看具体错误信息** 首先,需要查看 MySQL 错误日志以获取更多的错误信息。这可以帮助确定崩溃的表和具体的问题。 ```bash # 查看 MySQL 错误日志 tail -f /var/log/mysql/error.log ``` ### 2. **修复表** 不同的存储引擎有不同的修复工具,以下是常用的修复方法: #### **使用 `myisamchk` 修复 MyISAM 表** 如果崩溃的表使用的是 MyISAM 存储引擎,可以使用 `myisamchk` 工具来修复表。 1. 停止 MySQL 服务: ```bash sudo systemctl stop mysql ``` 2. 使用 `myisamchk` 修复表:

2024/8/11👍 0

mermaid.min.js的使用及介绍

`mermaid.min.js` 是一个 JavaScript 库,用于在浏览器中轻松绘制复杂的图表和流程图。Mermaid 通过使用简单的标记语言来描述图表,使得用户无需深入学习图表绘制的底层技术即可创建专业的图形。 在这篇文章中,我们将介绍 `mermaid.min.js` 的功能、应用场景、如何在项目中使用,以及一些常用的示例。 ## Mermaid 的功能 Mermaid 支持多种类型的图表,包括但不限于: 1. **流程图(Flowchart)**: - 用于表示流程或过程中的步骤。 - 支持各种节点和连线风格。 2. **序列图(Sequence Diagram)**: - 用于表示对象之间的交互。 - 展示消息的发送和接收过程。 3. **类图(Class Diagram)**: - 用于表示类及其关系。 - 支持类的属性和方法定义。 4. **状态图(State Diagram)**: - 用于描述系统状态及其转换。 - 适用于复杂的状态机建模。 5. **甘

2024/8/9👍 0

docker之Dockerfile及docker compose配置文件的说明及使用

Docker 的配置文件对于镜像构建和容器化应用的管理至关重要。在 Docker 中,主要的配置文件是 Dockerfile 和 docker-compose.yml。Dockerfile 用于构建镜像,而 docker-compose.yml 用于定义多容器应用。下面将详细介绍这两个文件的配置选项和用法。 ## Dockerfile 配置详解 **Dockerfile** 是一个文本文件,其中包含一组指令,用于定义如何构建 Docker 镜像。以下是 Dockerfile 中常用的指令及其用法: ### FROM `FROM` 指令用于指定基础镜像,是 Dockerfile 中的第一条指令。 ```dockerfile FROM node:14 ``` 上例中,`node:14` 是官方的 Node.js 版本 14 的镜像。 ### LABEL `LABEL` 用于为镜像添加元数据,以键值对形式存在。 ```dockerfile LABEL maintainer="your-email@example.com" LABE

2024/8/9👍 0