linux gcc/g++编译安装 gcc7.5.0 c++17

news/2024/10/31 3:26:38/

linux C++17编译:

  • 编译指定参数 -std=c++17

编译指定参数 -std=c++17

例:g++ -std=c++17 main.cpp
#如果编译器不支持c++17就会提示:g++: error: unrecognized command line option ‘-std=c++17’

方法:
1.下载高版本gcc 建议7.3以上
wget http://mirror.linux-ia64.org/gnu/gcc/releases/gcc-7.5.0/gcc-7.5.0.tar.gz
2.解压:
tar -zxvf gcc-7.5.0.tar.gz
3.进入目录执行脚本下载依赖包:
cd gcc-7.5.0
./contrib/download_prerequisites
输出结果
[root@localhost gcc-7.5.0]# ./contrib/download_prerequisites
2019-11-19 17:19:29 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840] -> “./gmp-6.1.0.tar.bz2” [1]
2019-11-19 17:19:52 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 [1279284] -> “./mpfr-3.1.4.tar.bz2” [1]
2019-11-19 17:20:11 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925] -> “./mpc-1.0.3.tar.gz” [1]
2019-11-19 17:21:26 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2 [1626446] -> “./isl-0.16.1.tar.bz2” [1]
gmp-6.1.0.tar.bz2: OK
mpfr-3.1.4.tar.bz2: OK
mpc-1.0.3.tar.gz: OK
isl-0.16.1.tar.bz2: OK
tar (child): lbzip2: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
error: Cannot extract package from gmp-6.1.0.tar.bz2

这种清空需要下载一个 lbzip2
yum install lbzip2 再执行就ok了。

4.编译:
先创建一个文件夹 把这四个依赖的都cp进去。
mkdir gcc-Builder-7.5.0
cp gmp-6.1.0.tar.bz2 mpfr-3.1.4.tar.bz2 mpc-1.0.3.tar.gz isl-0.16.1.tar.bz2 gcc-Builder-7.5.0
然后进入该文件夹
cd gcc-Builder-7.5.0
先进行编译配置,生成makefile文件
执行
…/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
看是否成功,成功之后会在当前目录生成Makefile文件
开始编译:
make -j4
编译时间有点长大概二十到半个小时

5.安装:
安装前要卸载原来gcc ,g++
查看安装的包
rpm -q gcc
rpm -q gcc-c++
再根据包名卸载之

rpm -e 包名
此处可能有些依赖不能卸载,于是使用强制卸载才行
rpm -e 包名 --nodeps
注意:可能以来的程序使用不正常

安装:
进入当前目录下的gcc进行安装
cd gcc
make -j8
完成了检查一下是否成功:
gcc -v
g++ -v
如果不成功请检查下环境变量对不对,
我的是安装在/usr/local/bin/ 下面
因我卸载gcc的时候 有些依赖,卸载失败我就直接安装了,结果g++ 正常7.5.0,而gcc还是就的4.8.5
于是我才强制卸载,之后再make -j8.后来遇到 libstd++ 里面缺少好多东西的
解决办法
把这条软连接
/usr/lib/libstdc++.so.6 -> /usr/local/lib/libstdc++.so.6.0.19
改为:
/usr/lib/libstdc++.so.6 -> /usr/local/lib64/libstdc++.so.6.0.24
ok!
可能是因为我安装的时候有依赖没法自动修改这个连接导致的,不知道一个空的机器有没有这个问题。


http://www.ppmy.cn/news/292781.html

相关文章

Ubuntu没有gcc, g++处理

没有gcc, g,不能使用sudo apt-get install 安装, 提示Lock; 创建如下脚本,执行后再使用sudo apt-get install gcc安装即可 #! /bin/bash #先使用下面的语句 #sudo killall apt apt-all #提示如下内容,继续使用下面的语句处理…

ubuntu安装g++/gcc 7版本

安装gcc-7/g -7 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-7 sudo apt-get install g7 修改本地gcc/g版本,首先设置优先级 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100 sud…

关于hadoop 在浏览器中看hdfs

最近在折腾 hadoop 在物理机中用浏览器访问hdfs 点击 Browse the filesystem 浏览器中的地址栏 从 http://hunter-lenovo-g475:50070/dfshealth.jsp 变成 localhost... 然后在网上找了资料说是 物理机的hosts 文件没配,但实际上并不是 。我用ip 和主机名…

FinalShell界面左侧为什么能够监测系统指标动态变化的原理

前言: 我们可以看出FinalShell是用Java写的,具体怎么看出来的,不能光看界面logo是Java的logo,还要进它的安装目录下进行查看是否真是用Java编写的!!! 具体查看如下: 查看finalshe…

插件化技术

插件化技术 一.概述二.原理三.好处四.插件化涉及到的技术以及常用的插件化框架五.详细说明1.第一个问题:类加载(1)Android 项目中,动态加载技术按照加载的可执行文件的不同大致可以分为两种:(2)…

Pull Request完整过程【记一次给antvis:G6的PR】

文章目录 前言Bug 重现问题排查解决方案old versionnew version收到回复 PR提交完整过程fork仓库 & clone代码仓添加upstreamfetch 新分支创建新分支完成修改(注意commit规范)push到个人仓库创建Pull Request填写PR信息 前言 G6正在进行v4到v5的版本…

linux基础命令系列之10 分钟掌握 ln 命令:创建链接,软链接,硬链接,递归链接,打印详细输出

文章目录 前言一. ln命令介绍二. 语法格式及常用选项三. 参考案例3.1 ln命令创建硬链接3.1.1 创建硬链接3.1.2 源文件被删除,不影响链接文件的正常使用3.1.3 硬链接不能跨分区创建 3.2 为什么目录刚刚创建的时候,链接数为23.3 ln -s 软链接的创建3.3.1 l…

高性能计算与AI融合成为刚需|什么是高性能计算?应用领域有哪些?与人工智能的关系梳理

本文一部分转载自杨净 整理自 MEET2023量子位 算力的需求,远比以往来得更为猛烈。甚至有人直呼:得算力者得未来。 元宇宙、AIGC、AI for Science的涌现,又给高性能计算(HPC)平添了好几把火。 在诸多挑战与机遇共存交…