中标麒麟高级服务器操作系统 V7.6 升级安装 GCC-8.5.0 编译工具
二、安装环境
操作系统版本:中标麒麟高级服务器操作系统 V7U6-x86_64操作系统自带 GCC 版本:gcc 4.8.5
待升级的 GCC 版本:gcc 8.5.0三、安装步骤
1. 编译环境准备
[root@localhost ~]# yum -y install bzip2 wget gcc gcc-c++ gmp-devel mpfr-devel libmpc-devel make
2. 获取 GCC-8.5.0 源码包下载链接:gcc-8.5.0
[root@localhost ~]# mkdir /opt/gcc-8.5.0 [root@localhost ~]# cd /opt/gcc-8.5.0/
[root@localhost gcc-8.5.0]# cp /root/gcc-8.5.0.tar.gz . [root@localhost gcc-8.5.0]# tar -zxvf gcc-8.5.0.tar.gz [root@localhost gcc-8.5.0]# cd gcc-8.5.0
3. 安装 GCC 依赖包
[root@localhost gcc-8.5.0]# ./contrib/download_prerequisites
4. 编译安装 GCC
(1) 生成 Makefile 文件
[root@localhost gcc-8.5.0]# ./configure --prefix=/usr/local/gcc
--enable-bootstrap --disable-multilib
(2) 编译 GCC
[root@localhost gcc-8.5.0]# make -j 4
注意:这里使用-j 参数是利用多核 CPU 快速编译,具体可以通过命令“cat
/proc/cpuinfo| grep “processor”| wc -l” 来查看最高设置多少个核心来进行编译工作。编译过程时间较长,请耐心等待。
(3) 安装 GCC
[root@localhost gcc-8.5.0]# make install
(5) 修改 PATH 环境变量
注意:这里只修改当前用户下的环境变量。 [root@localhost ~]# vim ~/.bash_profile
(6) 使 PATH 环境变量生效
[root@localhost ~]# source ~/.bash_profile
(7) 确认当前用户下的 GCC 版本
[root@localhost ~]# gcc --version
[root@localhost ~]# g++ --version
四、验证
编译一个 hello.cpp [root@localhost ~]# vim hello.cpp
#include <iostream>#include <thread>#include <unistd.h>#include
<vector>using namespace std;void MyThread(int iPara){ cout<<"MyThread----: "<< iPara <<endl; sleep(1); ///The para is Seconds}
int main(){
thread threadDemo(MyThread, 123); cout <<" start"<<endl;
threadDemo.join();
cout <<" end"<<endl;
vector<int> vecTest; vecTest.clear(); vecTest.push_back(10); vecTest.push_back(20); vecTest.push_back(30);
vecTest.push_back(40); vecTest.push_back(50); vecTest.push_back(1); vecTest.push_back(2);
for(auto &changeValue:vecTest)
{
changeValue = changeValue * 2;
}
cout<<"display new value:"<<endl; for(auto newValue:vecTest)
{
cout << newValue<<endl;
}
return 0;}
[root@localhost ~]# g++ hello.cpp -std=c++17 -pthread -o hello.bin
[root@localhost ~]# ./hello.bin
这里我们可以看到,编译没有问题,但是运行编译生成的可执行文件时报错了。这是因为系统仍在使用旧的 libstdc++.so.6 库文件,所以需要手动更新这个库文件。步骤如下:
(1) 先查看当前 libstdc++.so.6 库文件是否支持 CXXABI_1.3.9 和 GLIBCXX_3.4.22;
[root@localhost ~]# strings /lib64/libstdc++.so.6 | grep CXXABI_1.3.9
[root@localhost ~]# strings /lib64/libstdc++.so.6 | grep GLIBCXX_3.4.22
备注:上述命令执行结果没有输出信息,代表不支持 CXXABI_1.3.9 和 GLIBCXX_3.4.22。
(2) 搜索新编译安装的 GCC 的 libstdc++.so.6 库文件;
[root@localhost ~]# find / -name libstdc++.so
(3) 拷贝新的 libstdc++.so.6 库文件到操作系统/lib64/目录中,并重新生成链接库文件;
[root@localhost ~]# cp
/opt/gcc-8.5.0/gcc-8.5.0/x86_64-pc-linux-gnu/libstdc+± v3/src/.libs/libstdc++.so /lib64/
[root@localhost ~]# ln -sf /lib64/libstdc++.so /lib64/libstdc++.so.6
(4)重新运行 hello.bin 二进制文件,可以正常执行。
[root@localhost ~]# ./hello.bin
转载自:https://blog.csdn.net/ShenSeKyun/article/details/126280142