一、解决使用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 11月 26 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