在centos7等旧版linux上用国内源下载源码编译安装gcc并配置环境变量
Date: 2025-06-25
前言:
- centos7, ubuntu-18.04等已经EOL的系统已经不推荐用了,但是由于之前做的本地服务器一直用的是centos-7.9,稳定运行5年了,就不去换系统了
- 以下仅为个人环境下的记录,仅供参考,勿照抄使用
- 对于大多数不熟悉linux的用户,可以把这里的流程作为最佳实践,因为我写的方案本身就是企业级的解决方案和规划,基本都是基于官方文档的思路
- gcc版本可以自己去仓库中选择,能成功编译下来即可,无相应开发需求就无需纠结哪个版本
参考链接:
- gcc官网:https://www.gnu.org/software/gcc/
- gcc下载:https://ftp.gnu.org/gnu/gcc/
- 安装说明:Installing GCC - GNU Project
- gcc国内镜像:https://mirrors.aliyun.com/gnu/gcc/
本次目的用来解决类似这样的问题:
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
/lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
也就是系统自带的 libstdc++ 版本过低
## 查看当前可用的 GLIBCXX 版本
strings /usr/lib64/libstdc++.so.6 | grep ^GLIBCXX
解决:编译安装高版本gcc
(潜在问题:产生的文件数量是巨量的 13W+,编译耗时特别长 6核6线程也需要1小时以上)
## 可选:安装编译要用的依赖
yum install texinfo
GCC_VERSION=10.5.0
cd /data-nas/linux/files/download
wget https://mirrors.aliyun.com/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz
tar -zxf gcc-${GCC_VERSION}.tar.gz
mv gcc-${GCC_VERSION} /data-nas/linux/software/_installation_dir/
cd /data-nas/linux/software/_installation_dir/gcc-${GCC_VERSION}
# 这里就是下载4个软件压缩包,国内没找到合适的镜像,可以开代理下载
./contrib/download_prerequisites
mkdir build && cd build
../configure --prefix=/data-nas/linux/software/gcc-${GCC_VERSION} --disable-multilib --enable-languages=all
make -j6
make install
# 最好顺手删掉编译的目录,文件数量太庞大了
rm -rf /data-nas/linux/software/_installation_dir/gcc-${GCC_VERSION}
由于gcc的bin和动态库等文件数量都比较多,而且可能会切换不同版本的gcc,因此本次不考虑做软链到_shortcut,而是直接添加环境变量,编辑 /etc/profile,添加内容如下:
## gcc PATH
GCC_VERSION=10.5.0
PATH=/data-nas/linux/software/gcc-${GCC_VERSION}/bin:$PATH
CPATH=/data-nas/linux/software/gcc-${GCC_VERSION}/include:$CPATH
LIBRARY_PATH=/data-nas/linux/software/gcc-${GCC_VERSION}/lib64:/data-nas/linux/software/gcc-${GCC_VERSION}/lib:$LIBRARY_PATH
LD_LIBRARY_PATH=$LIBRARY_PATH
MANPATH=/data-nas/linux/software/gcc-${GCC_VERSION}/share/man:$MANPATH
unset GCC_VERSION
export PATH CPATH LIBRARY_PATH LD_LIBRARY_PATH MANPATH
验证安装:
gcc --version
centos-release-scl(解决不了缺少动态库的问题)
参考链接:
- bash - How to properly upgrade gcc on Centos 7? - Super User
- ABI Policy and Guidelines
- gcc - GLIBCXX_3.4.21 not found on CentOS 7 - Stack Overflow
yum install -y centos-release-scl
安装后在 /etc/yum.repos.d 多2个repo文件,但是已经过期了,因此本次将其改为 中科大的SCL yum源:
https://mirrors.ustc.edu.cn/centos-vault/centos/7/sclo/
将2个repo文件改为如下:
CentOS-SCLo-scl-rh.repo
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7/sclo/$basearch/rh/
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rh
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-rh-testing]
name=CentOS-7 - SCLo rh Testing
baseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/rh/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-rh-source]
name=CentOS-7 - SCLo rh Sources
baseurl=http://vault.centos.org/centos/7/sclo/Source/rh/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-rh-debuginfo]
name=CentOS-7 - SCLo rh Debuginfo
baseurl=http://debuginfo.centos.org/centos/7/sclo/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
CentOS-SCLo-scl.repo
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7/sclo/$basearch/sclo/
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-sclo-testing]
name=CentOS-7 - SCLo sclo Testing
baseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/sclo/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-sclo-source]
name=CentOS-7 - SCLo sclo Sources
baseurl=http://vault.centos.org/centos/7/sclo/Source/sclo/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
[centos-sclo-sclo-debuginfo]
name=CentOS-7 - SCLo sclo Debuginfo
baseurl=http://debuginfo.centos.org/centos/7/sclo/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
配置完后,刷新缓存,然后安装:
yum makecache
## 查看有哪些版本
yum list available devtoolset-*
## 可以多安装几个版本
yum install devtoolset-11
yum install devtoolset-8
用法:
仅在当前shell中启用:
scl enable devtoolset-8 bash
gcc --version
每次登录shell都生效,那就往 ~/.bash_profile 中添加内容:
source /opt/rh/devtoolset-8/enable
删除:
yum remove devtoolset-8*
rm -rf /opt/rh/devtoolset-8
本文声明:
- 此文可能会存在排版、样式不美观,图片无法显示等问题
- 文章内容在原文永久链接中会定期更新,此文不做同步更新
- 限于篇幅长度限制,此文可能会有裁剪
建议阅读原文链接
在centos7等旧版linux上用国内源下载源码编译安装gcc并配置环境变量的更多相关文章
- CentOS7 编译安装nodejs,配置环境变量记录
每次都装,每次都查 阿里云备案了一个域名,续费了好多年,但是没钱买服务器,就挂在github上.今天收到消息:域名解析服务器不在阿里云,要被GG.只能咬牙买了个阿里云乞丐版. 所有服务都装好了,pin ...
- CentOS7 + Nginx1.13.5 + PHP7.1.10 + MySQL5.7.19 源码编译安装
一.安装Nginx 1.安装依赖扩展 # yum -y install wget openssl* gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng ...
- window 远程在Linux(centOS7.0)上安装JDK以及配置环境变量
本人是在windows 7 上安装了虚拟机,虚拟机安装的是linux(centOS7.0)系统现在在Windows 上安装SecureCRT 远程虚拟机的linux系统,安装JDK以及配置环境变量. ...
- centos7.6环境zabbix3.2源码编译安装版升级到zabbix4.0长期支持版
zabbix3.2源码编译安装版升级到zabbix4.0长期支持版 项目需求: .2版本不再支持,想升级成4.0的长期支持版 环境介绍: zabbix服务端是编译安装的,数据库和web在一台机器上 整 ...
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- centos7源码编译安装lamp/lnmp
centos7源码编译安装lamp/lnmp 进程:是包工头(相当于是个门,只管开门关门,不管门内的事儿) 线程:是各种工种(cpu调度的是线程) 进程 是一件事情, 线程 是 同一个时间范围内 同时 ...
- Linux 从源码编译安装 OpenSSH
https://blog.csdn.net/bytxl/article/details/46639073 Linux 从源码编译安装 OpenSSH以及各问题解决 2015年06月25日 17:37: ...
- Linux 下源码编译安装 vim 8.1
前言 目前 linux 的各个发行版基本上都是带了一个 vi 编辑器的,而本文要说的 vim 编辑器对 vi 做了一些优化升级,更好用.当我们需要远程操作一台 linux 服务器的时候,只能使用命令行 ...
- CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境
CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境 什么是LNMP? LNMP(别名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/ ...
- Centos7.X 源码编译安装subversion svn1.8.x
说明:SVN(subversion)的运行方式有两种:一种是基于Apache的http.https网页访问形式:还有一种是基于svnserve的独立服务器模式.SVN的数据存储方式也有两种:一种是在B ...
随机推荐
- BUUCTF---Cipher1(playfair)
playfair Playfair密码原理以及该题解题步骤 Playfair密码(Playfair cipher 或 Playfair square)一种替换密码,1854年由查尔斯·惠斯通(Char ...
- [每日算法 - 阿里机试] leetcode739. 每日温度
入口 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer.https://le ...
- Lazarus信创之路:启程,自动升级程序
相信国内做Delphi开发的不在少数,信创大趋势下,很多转Lazarus开发了.最近我也研究了一下,决定也转到这下面来,主要考虑:1.商业化方便,无版权纠纷:2.兼容Delphi语法,上手很快:3.原 ...
- 详细介绍Mybatis的缓存机制
一.缓存机制 1.缓存概述 缓存:缓存就是一块内存空间,保存临时数据 作用:将数据源(数据库或者文件)中的数据读取出来存放到缓存中,再次获取时直接从缓存中获取,可以减少和数据库交互的次数,提升程序的性 ...
- 多线程的waiting与notify
一.waiting()与notify() /* 进入到TimeWaiting(计时等待)有两种方式 1.使用sleep(long m)方法,在毫秒值结束之后,线程睡醒进入到Runnable/Block ...
- Spring Bean的声明方式
一.环境说明 项目结构 StudentService package com.cookie.service; /** * @author cxq * @version 1.0 * @date 2020 ...
- MySQL 中的数据排序是怎么实现的?
MySQL 中的数据排序实现 在 MySQL 中,数据排序是通过 ORDER BY 子句实现的,主要涉及 文件排序 和 索引排序 两种方式. 1. 排序的基本原理 MySQL 的排序实现分为以下两种情 ...
- 漏洞预警 | 明源地产ERP SQL注入漏洞
0x00 漏洞编号 暂无 0x01 危险等级 高危 0x02 漏洞概述 明源地产ERP是一款专为房地产行业设计的企业资源计划管理系统,致力于为房地产开发企业提供全面的管理解决方案. 0x03 漏洞详情 ...
- 基于Kubernetes可扩展的Selenium 并行自动化测试部署及搭建(1)——Win10环境下Docker部署
前言: 最近逛swtestacademy时候发现一篇基于kubernetes搭建selenium并行自动化测试的帖子,主要描述的是通过k8s动态扩展selenium grid来实现自动化测试用例在不同 ...
- Linux系列:聊一聊 SystemV 下的进程间共享内存
一:背景 1. 讲故事 昨天在分析一个 linux 的 dump 时,看到了这么一话警告,参考如下: 0:000> !eeheap -gc *** WARNING: Unable to veri ...