CentOS安装gcc-5.4.0

本文档详细介绍了在Linux系统中遇到wget证书验证问题时如何通过安装ca-certificates来解决,并提供了手动编译安装GCC 5.4.0的步骤,包括下载依赖、配置编译选项、编译和安装。同时,针对运行GCC时出现'GLIBCXX_3.4.21' not found的错误,给出了查看系统库、替换缺失库文件的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、解决使用wget出现证书问题

[root@localhost ~]# wget https://gcc.gnu.org/gcc-7/
--2018-08-16 17:08:54--  https://gcc.gnu.org/gcc-7/
Resolving gcc.gnu.org (gcc.gnu.org)... 209.132.180.131
Connecting to gcc.gnu.org (gcc.gnu.org)|209.132.180.131|:443... connected.
ERROR: cannot verify gcc.gnu.org's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3’:
  Unable to locally verify the issuer's authority.
To connect to gcc.gnu.org insecurely, use `--no-check-certificate'.
错误:无法验证Gcc.GNU.org的证书,由'/C= U/O==让我们加密/CN=让加密权限X3’:

无法在本地验证发行者的权限。

为了安全地连接到GC.GNU.ORG,请使用“无检查证书”。
此时使用以下命令即可
[root@localhost ~]# yum install -y ca-certificates

二、安装编译gcc-5.4.0

1、准备工作

● 联网环境下下载gcc 5.4.0源码包,下面是一个实测下载速度还可以的地址:https://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz
● 联网环境下下载gcc的必要依赖包,解压包之后,通过包里面的脚本直接下载

tar xvf gcc-5.4.0.tar.gz
cd gcc-5.4.0
./contrib/download_prerequisites

● 依赖包下载完成后,将包含依赖包的文件夹重新打包

tar -czvf gcc-5.4.0-withdepends.tar.gz gcc-5.4.0/*

2、开始安装

● 将包含依赖包的完整包复制到目标机器并解压

tar -xzvf gcc-5.4.0-withdepends.tar.gz

● 配置编译选项,生成Makefile文件

./configure --prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib

● 开始编译和安装,过程会比较久,大概2个小时(看机器配置)

make
make install

● 重建软链接

mv /usr/bin/gcc /usr/bin/gcc_bak
ln -s /usr/local/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++_bak
ln -s /usr/local/bin/g++ /usr/bin/g++

三、解决运行gcc出现’GLIBCXX_3.4.21’ not found

● 查看libstdc++.so.6的信息

[root@localhost ~]# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

● 查找本机的libstdc++.so.6*库文件

[root@localhost ~]# find / -name libstdc++.so.6*
find: ‘/proc/1958046’: 没有那个文件或目录
/root/workspace/gcc5.4.0-src/gcc-build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
/root/workspace/gcc5.4.0-src/gcc-build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/root/workspace/gcc5.4.0-src/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
/root/workspace/gcc5.4.0-src/gcc-build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/root/workspace/gcc5.4.0-src/gcc-build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
/root/workspace/gcc5.4.0-src/gcc-build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.19
/usr/lib64/libstdc++.so.6.0.21
/usr/lib64/libstdc++.so.6.bak
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
/usr/local/lib64/libstdc++.so.6.0.21
/usr/local/lib64/libstdc++.so.6
/usr/local/lib64/libstdc++.so.6.0.21-gdb.py
/home/docker/overlay2/9fbda40a5a028d05de8f6c7104de8853773d248b06b572e0905edb4eebd36723/diff/usr/lib64/libstdc++.so.6
/home/docker/overlay2/9fbda40a5a028d05de8f6c7104de8853773d248b06b572e0905edb4eebd36723/diff/usr/lib64/libstdc++.so.6.0.25
/home/docker/overlay2/9fbda40a5a028d05de8f6c7104de8853773d248b06b572e0905edb4eebd36723/diff/usr/share/gdb/auto-load/usr/lib64/__pycache__/libstdc++.so.6.0.25-gdb.cpython-36.opt-1.pyc
/home/docker/overlay2/9fbda40a5a028d05de8f6c7104de8853773d248b06b572e0905edb4eebd36723/diff/usr/share/gdb/auto-load/usr/lib64/__pycache__/libstdc++.so.6.0.25-gdb.cpython-36.pyc
/home/docker/overlay2/9fbda40a5a028d05de8f6c7104de8853773d248b06b572e0905edb4eebd36723/diff/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.25-gdb.py
/home/docker/overlay2/e115be1e84e961c8332bd3ac557d05069ef3a1c09ebf609a9176ea99d1723584/merged/usr/lib64/libstdc++.so.6
/home/docker/overlay2/e115be1e84e961c8332bd3ac557d05069ef3a1c09ebf609a9176ea99d1723584/merged/usr/lib64/libstdc++.so.6.0.25
/home/docker/overlay2/e115be1e84e961c8332bd3ac557d05069ef3a1c09ebf609a9176ea99d1723584/merged/usr/share/gdb/auto-load/usr/lib64/__pycache__/libstdc++.so.6.0.25-gdb.cpython-36.opt-1.pyc
/home/docker/overlay2/e115be1e84e961c8332bd3ac557d05069ef3a1c09ebf609a9176ea99d1723584/merged/usr/share/gdb/auto-load/usr/lib64/__pycache__/libstdc++.so.6.0.25-gdb.cpython-36.pyc
/home/docker/overlay2/e115be1e84e961c8332bd3ac557d05069ef3a1c09ebf609a9176ea99d1723584/merged/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.25-gdb.py
[root@localhost ~]#

● 查看/usr/lib64/libstdc++.so.6的引用

[root@localhost ~]# ls -al /usr/lib64/libstdc++.so.6
lrwxrwxrwx. 1 root root 30 1126 16:00 /usr/lib64/libstdc++.so.6 -> /usr/lib64/libstdc++.so.6.0.19
[root@localhost ~]#

● 解决方案步骤

cp /root/workspace/gcc5.4.0-src/gcc-build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64/
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
ln -s /usr/lib64/libstdc++.so.6.0.21 /usr/lib64/libstdc++.so.6
### 解决 Spyder 连接到 Kernel 的问题 当遇到 Spyder 中 IPython Console 卡在“Connecting to kernel”的情况时,可以尝试以下方法来解决问题。 #### 方法一:更新 `pyzmq` 库 如果正在使用 Anaconda,则可以通过更新 `pyzmq` 来修复此问题。运行以下命令以更新库: ```bash conda update pyzmq ``` 这一步通常能够解决大部分与 Kernel 连接相关的问题[^2]。 #### 方法二:重置 Spyder 配置文件 有时配置文件可能损坏或不兼容,导致无法正常启动 Kernel。通过删除或备份当前的 Spyder 配置文件并重新生成新的配置文件,可能会解决问题。执行以下命令: ```bash spyder --reset ``` #### 方法三:重启 Anacoda Navigator 或 Spyder 简单地关闭并重新打开 Spyder 可能会帮助恢复正常的 Kernel 连接功能。如果仍然无效,也可以尝试退出整个 Anaconda Navigator 并重新启动它。 #### 方法四:检查 Python 和 Spyder 版本 确保使用的 Python 和 Spyder 是最新版本或者至少是稳定版。旧版本可能存在一些已知缺陷影响其性能。可通过以下方式升级 Spyder: ```bash conda install spyder=latest_version_number ``` 或者对于 pip 用户来说, ```bash pip install --upgrade spyder ``` #### 方法五:手动创建一个新的 Conda 环境 作为最后手段之一,考虑建立全新的虚拟环境,并安装所需软件包至其中测试是否还有同样错误发生。 ```bash conda create -n new_env_name python=desired_python_version spyder conda activate new_env_name ``` 以上措施应该可以帮助大多数用户摆脱 "Connecting to kernel..." 的困境。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值