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的更多相关文章

  1. 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 查看硬 ...

  2. 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 显示系统版 ...

  3. 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 显示系统版 ...

  4. 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 显示系统版 ...

  5. CentOS7编译安装Nginx-1.8.1和编译参数

    CentOS7编译安装Nginx-1.8.1和编译参数 Web服务器Nginx    LNMP是一组众所周知的Web网站服务器架构环境,即由Linux+Nginx+MySQL+PHP(MySQL有时也 ...

  6. centos7编译安装MySQL5.7.9

    title: centos7编译安装MySQL5.7.9 date: 2016-05-12 16:20:17 tags: --- Centos7编译安装mysql5.7.9 mysql5.7有更好的性 ...

  7. CentOS7 编译安装LNMP

    (文章来自:http://www.cnblogs.com/i-it/p/3841840.html,请各位到这个网址去看原文的) LNMP(Linux-Nginx-Mysql-PHP),本文在CentO ...

  8. 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 查看硬 ...

  9. 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 查看硬 ...

随机推荐

  1. [html][javascript] 关于SVG环形进度条

    下面是个例子: <style> .demo2{ transform-origin: center; transform: rotate(-90deg); transition: strok ...

  2. 最新VMware虚拟机安装Linux系统-CentOS(详细教程)

    一.前言 最近有网友反应初学Linx不会安装,找了许多教程不是太全面,总会遇到一些要不是启动不了,要不是连不上网,各种问题,为了让大家能够顺利的安装,小乐写了一个非常详细的教程,让大家少入坑. 二.背 ...

  3. 双系统情况下,ubuntu开机挂载Windows分区

    首先:blkid,查看分区所属uuid 其中 /dev/sda5 就是Windows分区 其次:fdisk -l,查看分区情况 通过硬盘大小找到对应要设置的具体分区(其实这步也不用,我只是为了确定) ...

  4. Python常见报错 - 使用openpyxl模块时出现错误: zipfile.BadZipFile: File is not a zip file

    背景 在pycharm项目下,有一个data.xlsx,主要用来存放接口测试用例数据的 要通过openpyxl库去读取data.xlsx,方法: openpyxl.load_workbook(path ...

  5. 0day堆(1)堆的管理策略

    基本概念 堆块:堆区内存的基本单位 包括两个部分:块首,块身 块首:标识这个堆块自身的信息:如大小,是否被占用等 块身:分配给用户使用的数据区 堆表:一般位于堆区的起始位置,用于索引堆区所有堆块的信息 ...

  6. mac使用brew安装mysql5.7

    安装mysql5.7 brew install mysql@5.7 设置环境变量(可能安装完自动生成过了,可以cat ~/.zshrc看一下,有了就不用添加了 ) echo 'export PATH= ...

  7. sql注入学习笔记

    1.什么是SQL注入 SQL注入就是指web应用程序对用户输入的数据的合法性没有判断,前端传入后端的参数带有数据库查询的语句,攻击者可以构造不同的SQL语句来实现对数据库的操作. 2.SQL注入原理 ...

  8. centos7与8的区别

    1.关于内核版本:RHEL8采用4.18.0-xRHEL7采用3.10-0-x 2 网络时间同步 RHEL8 只使用Chronyd,不支持NTP部署. RHEL7Chronyd与NTP两者都支持 3. ...

  9. DDOS攻击攻击种类和原理

    DoS攻击.DDoS攻击和DRDoS攻击相信大家已经早有耳闻了吧!DoS是Denial of Service的简写,就是拒绝服务,而DDoS就是Distributed Denial of Servic ...

  10. Linux 软链接和硬链接

    系统链接文件 文件有文件名和数据,在Linux上被分成两个部分:用户数据(user data)与元数据(metadata) 用户数据:文件数据块(data block),数据块是记录文件真实内容的地方 ...