centos7 默认的 gcc 版本是 4.8.5,无奈编译高版本的 glibc 2.28,须要降级到 gcc 8.2 版本
注:gcc 高版本和 glibc 2.28 不兼容
## 查看自带默认的 glibc
strings /lib64/lib.so.6 | grep GLIBC
# 查看 glibc 软件版本号
rpm -qa | grep glibc
降级 gcc
降级 glibc
1. 装置 gcc-8.2.0 依赖环境
yum install bison -y
yum -y install wget bzip2 gcc gcc-c++ glib-headers
2. 降级 GNU make 到 make 4.2
wget http://ftp.gnu.org/gnu/make/make-4.2.1.tar.gz
tar -zxvf make-4.2.1.tar.gz
cd make-4.2.1
mkdir build
cd build
../configure --prefix=/usr/local/make && make && make install
export PATH=/usr/local/make/bin:$PATH
ln -s /usr/local/make/bin/make /usr/local/make/bin/gmake
make -v
# 昨天应用这段命令装置的
wget http://ftp.gnu.org/gnu/make/make-4.2.tar.gz
tar -xzvf make-4.2.tar.gz
cd make-4.2
sudo ./configure
sudo make
sudo make install
sudo rm -rf /usr/bin/make
sudo cp ./make /usr/bin/
make -v
3. 装置 Python3.8
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz
xz -d Python-3.8.0.tar.xz
tar xf Python-3.8.0.tar
cd Python-3.8.0
./configure --prefix=/usr/local/python3
make -j 2 && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
-
装置 python3 make 时报错 Failed to build these modules: _ctypes
yum install -y libffi-devel
-
谬误提醒:Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_P
装置 libressl
# 下载源码包 wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.0.2.tar.gz # 解压 tar -zxvf libressl-3.0.2.tar.gz # 配置装置门路 mkdir /usr/local/libressl cd libressl-3.0.2 ./configure --prefix=/usr/local/libressl # 装置 make make install # 创立软连贯代替 openssl mv /usr/bin/openssl /usr/bin/openssl.bak mv /usr/include/openssl /usr/include/openssl.bak ln -s /usr/local/libressl/bin/openssl /usr/bin/openssl ln -s /usr/local/libressl/include/openssl /usr/include/openssl echo /usr/local/libressl/lib >> /etc/ld.so.conf.d/libressl-3.0.2.conf ldconfig -v # 验证是否装置实现 openssl version
-
谬误提醒:echo 权限不够
# 要给 echo 整条命令加单引号 sudo sh -c 'echo /usr/local/libressl/lib >> /etc/ld.so.conf.d/libressl-3.0.2.conf'
-
-
谬误提醒:zlib not available
# 装置依赖 sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
4. 装置 gcc8.2.0
# 下载并解压
wdget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.gz
tar xf gcc-8.2.0.tar.gz
cd gcc-8.2.0
# 下载 gmp mpfr mpc 等供编译需要的依赖项
./contrib/download_prerequisites
# 配置
mkdir build
cd build
../configure --prefix=/usr/local/gcc-8.2.0 --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilib
# 编译装置
make -j 2
make install
# 批改环境变量,使得 gcc-8.2.0 为默认的 gcc
vi /etc/profile.d/gcc.sh
# 导出头文件
[yy@localhost profile.d]$ sudo ln -sv /usr/local/gcc-8.2.0/include/ /usr/include/gcc
"/usr/include/gcc/include" -> "/usr/local/gcc-8.2.0/include/"
5. 因为之前装置了 gcc11.2 须要做一下批改
# 利用环境变量
echo -e '\nexport PATH=/usr/local/gcc-8.2.0/bin:$PATH\n' >> /etc/profile.d/gcc.sh
source /etc/profile.d/gcc.sh
# 删除库文件
sudo rm /etc/ld.so.conf.d/gcc.conf
# 设置库文件
touch /etc/ld.so.conf.d/gcc.conf
chmod 777 /etc/ld.so.conf.d/gcc.conf
echo -e "/usr/local/gcc-8.2.0/lib64" >> /etc/ld.so.conf.d/gcc.conf
# 加载动静连贯库
ldconfig -v
# 查看 gcc
ldconfig -p |grep gcc
# 重启服务器
reboot
6. 配置 glibc2.28 还是报错 compiler
# 尝试昨天失败的命令
sudo sh -c 'echo"source /opt/rh/devtoolset-8/enable" >>/etc/profile‘
../configure 命令胜利
7. 编译
sudo make
sudo make install
make install
的报错
能够不必管
8. 验证是否胜利
[yy@localhost build]$ strings /usr/local/gcc-8.2.0/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_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
...
[yy@localhost build]$ strings /lib64/libc.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_2.18
GLIBC_2.22
GLIBC_2.23
GLIBC_2.24
GLIBC_2.25
GLIBC_2.26
GLIBC_2.27
GLIBC_2.28
GLIBC_PRIVATE
...
[yy@localhost build]$ ldd --version
ldd (GNU libc) 2.28
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.