CentOS7编译和安装GCC7.5
CentOS7编译和安装GCC7.5
一、 环境介绍:
CentOS7
虚拟机连上了互联网(为什么要强调这点呢,因为CentOS7每次进入系统,都需要手动点击右上角的Connect,才能连上互联网。在非联网情况下,会出现各种问题,影响我们的判断和安装)
二、 为什么是GCC7.5
CentOS7 自带的 gcc/g++ 版本是 4.8,如果没有安装,可以通过 yum 命令安装。
由于 gcc/g++ 4.8 完全支持 C++ 11,支持部分 C++ 14,不支持 C++ 17,而完全支持 C++ 17 的是 g++ 7 及以上版本:
个人不太建议安装GCC8.X,太新的编译器,所需要的依赖包、各种环境都需要最新版本,安装过程中会出现很多问题。而且还不一定那么稳定。
本着够用就好的原则,GCC7.5完全支持C++17,是最理想的选择。
若干参考链接:
https://blog.csdn.net/analogous_love/article/details/97823301
https://my.oschina.net/panquanxing/blog/3070964
三、 安装步骤
3.1更新系统以及安装若干相关的包(包括gcc gcc-c++)
在root权限下面进行这些操作
sudo yum -y update sudo yum -y install bzip2 wget gcc gcc-c++ gmp-devel mpfr-devel libmpc-devel make sudo yum -y install zlib sudo yum -y install zlib-devel
3.2下载GCC7.5的工程文件(下面的步骤,建议在非root权限下操作)
wget https://ftp.gnu.org/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz tar -zxvf gcc-7.5..tar.gz cd gcc-7.5.
3.3安装若干gcc的依赖包
./contrib/download_prerequisites mkdir gcc-build-7.5 cd gcc-build-7.5
3.4生成Makefile文件(下面这个是一行,请直接复制粘贴)
../configure --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --enable-gnu-indirect-function --with-tune=generic --disable-multilib
3.5编译(这个编译比较耗时)
make -j4
3.6安装(需要root权限)
make install
3.7查看gcc版本
gcc -v
3.8动态库 libstdc++.so.6 的更新(在root权限下进行下面的操作)
检查动态库:
strings /usr/lib64/libstdc++.so. | grep GLIBC
从输出可以看出,gcc的动态库还是旧版本的。说明出现这些问题,是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库。
执行以下命令,查找编译gcc时生成的最新动态库:(在root权限下进行操作,后面都是,不再赘述)
find / -xdev -name "libstdc++.so*"
你会看到有很多目录

拷贝最新编译的libstdc++.so.6.0.24 到 /usr/lib64目录(如果你前面都是按照步骤做了相同的配置,下面的步骤就是,直接执行这些命令,这里给的都是绝对路径。写这么多就是让读者看得明白。)
cp /usr/local/lib64/libstdc++.so.6.0. /usr/lib64/
删掉旧的libstdc++.so.6(这是一个软链接)
rm -rf /usr/lib64/libstdc++.so.
创建新的libstdc++.so.6软链接
ln -s /usr/local/lib64/libstdc++.so.6.0. /usr/lib64/libstdc++.so.
3.9编辑环境变量(建议在非root权限下操作)
vi ~/.bash_profile
在PATH里面追加 /usr/local/bin
添加 LD_LIBRARY_PATH、CC、CXX
导出 这些路径
这里是我的 .bash_profile
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/bin
LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
CC=/usr/local/bin/gcc
CXX=/usr/local/bin/g++ export PATH
export LD_LIBRARY_PATH
export CC
export CXX
3.10让当前的配置环境立即生效:
source ~/.bash_profile
四、 跑一个案例Hello.cpp
//////////// g++ hello.cpp -std=c++17 -pthread -o abc.bin #include <iostream>
#include <thread>
#include <unistd.h>
#include <vector>
using namespace std;
void MyThread(int iPara)
{
cout<<"MyThread----: "<< iPara <<endl;
sleep(); ///The para is Seconds
} int main()
{
thread threadDemo(MyThread, );
cout <<"-----------start"<<endl;
threadDemo.join();
cout <<"-----------end"<<endl;
vector<int> vecTest;
vecTest.clear();
vecTest.push_back();
vecTest.push_back();
vecTest.push_back();
vecTest.push_back();
vecTest.push_back();
vecTest.push_back();
vecTest.push_back();
for(auto &changeValue:vecTest)
{
changeValue = changeValue * ;
}
////////////
cout<<"display new value:"<<endl;
for(auto newValue:vecTest)
{
cout << newValue<<endl;
}
return ;
}
编译
g++ hello.cpp -std=c++ -pthread -o abc.bin
如果可以正常运行,那就应该OK了。
如果不能正常运行,麻烦重新再阅读这篇文章,从头到尾,重新操作一遍。(把解压和编译后的 gcc工程删了,重新解压、配置、编译)
CentOS7编译和安装GCC7.5的更多相关文章
- Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Mariadb 10.1.20 + Nginx 1.10.2 + PHP 7.1.0 + Laravel 5.3 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...
- CentOS7 编译安装 Mongodb (实测 笔记 Centos 7.0 + Mongodb 2.6.6)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...
- CentOS7 编译安装 Nginx (实测 笔记 Centos 7.0 + nginx 1.6.2)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...
- CentOS7 编译安装 Mariadb (实测 笔记 Centos 7.0 + Mariadb 10.0.15)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...
- CentOS7编译安装Nginx-1.8.1和编译参数
CentOS7编译安装Nginx-1.8.1和编译参数 Web服务器Nginx LNMP是一组众所周知的Web网站服务器架构环境,即由Linux+Nginx+MySQL+PHP(MySQL有时也 ...
- centos7编译安装MySQL5.7.9
title: centos7编译安装MySQL5.7.9 date: 2016-05-12 16:20:17 tags: --- Centos7编译安装mysql5.7.9 mysql5.7有更好的性 ...
- CentOS7 编译安装LNMP
(文章来自:http://www.cnblogs.com/i-it/p/3841840.html,请各位到这个网址去看原文的) LNMP(Linux-Nginx-Mysql-PHP),本文在CentO ...
- Centos7 编译安装 Nginx Mariadb Asp.net Core2 (实测 笔记 Centos 7.3 + Openssl 1.1.0h + Mariadb 10.3.7 + Nginx 1.14.0 + Asp.net. Core 2 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...
- Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Openssl 1.1.0e + Mariadb 10.1.22 + Nginx 1.12.0 + PHP 7.1.4 + Laravel 5.4 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...
随机推荐
- kubernetes的cni0和flannel.1的关系?
当容器运行之后,节点之间多了个虚拟接口cni0,它是由flanneld创建的一个虚拟网桥叫cni0,供pod本地通信使用.flanneld为每个pod创建一对veth虚拟设备,一端放在容器接口上,一端 ...
- pytorch torchversion自带的数据集
from torchvision.datasets import MNIST # import torchvision # torchvision.datasets. #准备数据集 mnist = M ...
- MySQL为某字段加前缀、后缀
在开发过程中,可能会遇到加前缀或者后缀的情况.比如为视频添加路径时,如果手动加起来肯定慢,而且比较不符合程序员的特点,我们就应该能让程序跑就不会手动加. 使用UPDATE sql 语句:update ...
- 痞子衡嵌入式:大话双核i.MXRT1170之Cortex-M7与Cortex-M4互相激活之道
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是恩智浦i.MXRT1170上Cortex-M7与Cortex-M4内核互相激活的方法. 痞子衡最近在深耕i.MXRT1170这颗划时代的 ...
- 使用JAVA API编程实现简易Habse操作
使用JAVA API编程实现下面内容: 1.创建<王者荣耀>游戏玩家信息表gamer,包含列族personalInfo(个人信息).recordInfo(战绩信息).assetsInfo( ...
- thinkphp5.0 url跳转
<a href="{:url('member/index/index',['id'=>5])}">跳转</a> define()自定义常量在thiin ...
- 必应每日图片api
https://cn.bing.com/HPImageArchive.aspx?format=xml&cc=jp&idx=0&n=1 format = 'xml' | 'j ...
- MAC地址欺骗(原理及实验)
MAC地址欺骗 MAC地址欺骗(或MAC地址盗用)通常用于突破基于MAC地址的局域网访问控制,例如在交换机上限定只转发源MAC地址修改为某个存在于访问列表中的MAC地址即可突破该访问限制,而且这种修改 ...
- 20199326《Linux内核原理与分析》第十一周作业
Shellsock攻击实验 实验背景 2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发. Shellshock,又称Bash ...
- CG-CTF(2)
CG-CTF https://cgctf.nuptsast.com/challenges#Web 续上~ 第七题:单身二十年 查看源代码: 取得flag(干杯~): 本题也可通过burp抓包,查看返回 ...