最近在尝试使用sklearn的升级版cuml,因为是一台没有连接互联网的gpu机器,所以构建cuml环境过程很坎坷,需要各种将各种whl包在线下载后上传到服务器中。
当我终于解决完包的互相依赖问题后,在import cuml时候遇到一个错误:ImportError: /lib64/libm.so.6: version `GLIBC_2.27’ not found (required by /anaconda3/envs/cuml_1/lib/python3.10/site-packages/cuml/internals/…/libcuml++.so)
查了一下自己机器的内核为kernel-3.10.0-1160.el7.x86_64,el7表示基于centos7的。于是乎搜索教程跟着一步步解决。
参考:https://blog.csdn.net/qq_39287495/article/details/139964001
更新glibc
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
#有网机器下载好后传输到服务器上后操作
tar xf glibc-2.28.tar.gz
cd glibc-2.28/ && mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
此时遇到报错说make的版本太旧
升级gcc与make
升级gcc
在无网络的 CentOS 7 系统上升级 GCC 到版本 8,可以通过以下步骤实现:
-
下载必要的文件:在有网络的机器上,下载 GCC 8 的源码和依赖包。
GCC 源码包:GCC Releases
依赖包:GMP, MPFR, MPC, ISL,参考GCC 8 依赖的 GMP, MPFR, MPC, ISL 的版本要求如下: 1. GMP (GNU Multiple Precision Arithmetic Library): 版本要求:GMP 4.3.2 或更高版本 2. MPFR (Multiple Precision Floating-Point Reliable Library): 版本要求:MPFR 3.1.0 或更高版本 3. MPC (Multiple Precision Complex Library): 版本要求:MPC 1.0.1 或更高版本 4. ISL (Integer Set Library): 版本要求:ISL 0.15 或更高版本
下载包时候注意满足 GCC 8 的构建需求。
可以在gcc中下载:下载
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-4.1.0.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.2.1.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.2.1.tar.gz
wget https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2
也可以在各自官网下载:
GMP: [GMP Releases](https://gmplib.org/download/gmp/)
MPFR: [MPFR Releases](https://www.mpfr.org/mpfr-current/)
MPC: [MPC Releases](https://www.multiprecision.org/mpc/download.html)
ISL: [ISL Releases](https://libisl.sourceforge.io/)
- 传输文件:将下载的文件传输到无网络的 CentOS 7 机器上。
- 安装依赖包:在无网络的 CentOS 7 机器上,安装必要的依赖包。传输到 /opt/gcc-deps 目录下。
注意,安装这些依赖包时有一定的顺序,因为它们之间存在依赖关系。建议按照以下顺序进行安装:
- GMP (GNU Multiple Precision Arithmetic Library)
- MPFR (Multiple Precision Floating-Point Reliable Library)
- MPC (Multiple Precision Complex Library)
- ISL (Integer Set Library)
cd /opt/gcc-deps
tar -xvf gmp-*.tar.bz2
tar -xvf mpfr-*.tar.bz2
tar -xvf mpc-*.tar.gz
tar -xvf isl-*.tar.bz2
cd gmp-*
./configure --prefix=/usr/local/gmp
make
make install
cd ../mpfr-*
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
make
make install
cd ../mpc-*
./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr
make
make install
cd ../isl-*
./configure --prefix=/usr/local/isl --with-gmp-prefix=/usr/local/gmp
make
make install
- 安装 GCC:假设你已经将 GCC 源码包传输到 /opt/gcc 目录下。
cd /opt/gcc
tar -xvf gcc-8.5.0.tar.xz
cd gcc-8.5.0
mkdir build
cd build
../configure --prefix=/usr/local/gcc-8.5.0 --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc --with-isl=/usr/local/isl
make -j$(nproc)
make install
- 更新环境变量:将新安装的 GCC 添加到系统的环境变量中。
echo 'export PATH=/usr/local/gcc-8.5.0/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/gcc-8.5.0/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
- 验证安装:检查 GCC 版本以确认安装成功。
gcc --version
补充:
安装gmp时候,报错没有m4工具
新一轮下载安装
wget http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz
tar -xzvf m4-1.4.13.tar.gz
cd m4-1.4.13
./configure --prefix=/usr/local
make
make install
编译gcc时候,报错:configure: error: C++ preprocessor “/lib/cpp” fails sanity check
解决:https://blog.csdn.net/john_f_lau/article/details/17652523
离线安装gcc
https://blog.csdn.net/master336/article/details/113995297,感谢博主的rpm下载链接,找了很久!
因为害怕报错无法定位,用了 make -j1,非常慢。。。。,建议不要使用,如果你在并行编译时遇到问题,可以先使用 make -j1 进行调试,找到问题并解决后再切换回并行编译。
继续报错
/opt/gcc/gcc-8.5.0/build/./gcc/cc1: error while loading shared libraries: libisl.so.15: cannot open shared object file: No such file or directory
参考:
https://blog.csdn.net/youth_xin/article/details/133908956
引入环境变量
echo 'export LD_LIBRARY_PATH=/usr/local/gmp/lib:/usr/local/mpfr/lib:/usr/local/mpc/lib:/usr/local/isl/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
升级make
你可以从 GNU 的官方 FTP 站点下载 make 的源码包:
GNU Make Releases
例如,下载 make-4.3:
wget https://ftp.gnu.org/gnu/make/make-4.3.tar.gz
- 解压源码包并编译安装:
cd /opt/make
tar -xzvf make-4.3.tar.gz
cd make-4.3
./configure --prefix=/usr/local
make
make install
- 更新环境变量:
确保新安装的 make 在 PATH 环境变量中:
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
安装bison
访问 CentOS Vault 或 RPM Find 下载所需的 RPM 包。
下载 bison RPM 包:
bison-3.0.4-2.el7.x86_64.rpm
直接rpm安装即可
最后,注意make -j$(nproc)导致broken pipe
还要删掉重新make 和 make install
就这样,在搜索-下载-上传-执行-报错-搜索这个循环中,一天时间过去了。。。。