Conda 环境下升级GCC 和 glibc (crypt.h) 教程

Conda 环境下升级 GCC 和 glibc (crypt.h) 教程

由于运行Low-Light Image Enhancement via Structure Modeling and Guidance原始论文代码,发现服务器的gcc版本太老,没法运行。同时缺少libxcrypt (crypt.h),不得不询问gpt进行解答。发现可以完美解决。

这个教程适用于无 root 权限的环境,如在 Conda 虚拟环境中需要安装新版 gcc/g++ 和补充 glibc (特别是 crypt.h) 失败的情况。


一、通过 conda 安装 gcc/g++

查看系统版本如下,gcc4.8版本很多现有的深度学习模型没法运行。需要进行升级
在这里插入图片描述
安装新版本

conda install -c conda-forge gcc_linux-64 gxx_linux-64

使用默认的安装,可能会带来版本太高的问题,超过11的版本,又太新,出现问题。可以指定9版本,

conda install -c conda-forge gcc_linux-64=9 gxx_linux-64=9

安装后,使用 conda 给的 gcc/g++ 而非系统自带:

export CC=$(which x86_64-conda-linux-gnu-gcc)
export CXX=$(which x86_64-conda-linux-gnu-g++)
### 问题分析 在安装或编译 ESMFold 的 `openfold` 项目时,出现以下两个主要错误: 1. **CUDA 编译器 (`nvcc`) 调用 GCC 失败**: 报错信息显示 `/picb/rsgeno2/jinyi/tangchuqi/anaconda3/envs/esmfold/bin/gcc: No such file or directory`,表明系统无法找到指定的 `gcc` 编译器路径。这是由于环境变量中配置的 `CC` `CXX` 指向了不存在的 `gcc` `g++` 可执行文件,或者 Conda 环境中未正确安装所需的编译工具链。 2. **crypt.h 头文件缺失导致 C++ 编译失败**: 在尝试使用 `g++` 编译 CUDA 扩展代码时,报错提示 `/picb/rsgeno2/jinyi/tangchuqi/anaconda3/envs/esmfold/include/python3.7m/Python.h:44:10: fatal error: crypt.h: No such file or directory`,表明当前环境中缺少某些系统级头文件依赖项,特别是 `crypt.h`。该文件属于 Linux 系统库的一部分,通常由 `libxcrypt-dev` 或 `glibc-headers` 等开发包提供[^1]。 --- ### 解决方案 #### 修复 nvcc 调用 gcc 失败的问题 首先,确认 Conda 环境中是否已安装 `gcc` `g++` 编译器。可以通过以下命令安装必要的编译工具链: ```bash conda install -c conda-forge gxx_linux-64 gcc_linux-64 ``` 上述命令会安装适用于 Linux x86_64 架构的 GCC 工具链,并将其放置于 Conda 环境下的 `bin/` 目录(如 `/picb/rsgeno2/jinyi/tangchuqi/anaconda3/envs/esmfold/bin/gcc`)。确保这些可执行文件确实存在,否则手动调整 `CC` `CXX` 环境变量指向正确的路径: ```bash export CC=/picb/rsgeno2/jinyi/tangchuqi/anaconda3/envs/esmfold/bin/x86_64-conda-linux-gnu-gcc export CXX=/picb/rsgeno2/jinyi/tangchuqi/anaconda3/envs/esmfold/bin/x86_64-conda-linux-gnu-g++ ``` Conda 提供的编译器通常以 `x86_64-conda-linux-gnu-gcc` `x86_64-conda-linux-gnu-g++` 命名,而非简单的 `gcc` 或 `g++`。因此,直接使用完整名称可以避免路径解析失败的问题。 #### 安装 crypt.h 头文件解决 Python.h 编译失败 报错提示的 `crypt.h` 文件是 Linux 系统安全库的一部分,通常由 `libxcrypt-dev` 或 `glibc-headers` 包提供。根据所使用的 Linux 发行版,执行以下命令之一进行安装: - **Ubuntu / Debian**: ```bash sudo apt-get update sudo apt-get install -y libxcrypt-dev ``` - **CentOS / RHEL**: ```bash sudo yum install -y glibc-headers ``` 完成安装后,重新运行 `pip install -e .` 以继续构建过程。若仍存在问题,检查 Conda 环境中的 Python 开发头文件是否完整,可通过以下命令安装: ```bash conda install -c conda-forge python-slugify cython numpy pybind11 ``` 此外,确保 Conda 环境中已安装 PyTorch 的 CUDA 支持版本,因为 `openfold` 依赖其提供的 CUDA 扩展支持: ```bash conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch ``` --- ### 总结与建议 在构建 `openfold` 项目时遇到的编译错误,主要源于两方面原因:一是 Conda 环境中缺少可用的 `gcc` `g++` 编译器;二是系统级头文件(如 `crypt.h`)未被安装。通过安装适当的编译工具链、设置正确的环境变量以及补充缺失的系统依赖项,可有效解决这些问题。 对于复杂依赖管理,推荐使用预构建 Docker 镜像或基于 Conda 的标准化部署流程,以避免本地环境配置带来的不确定性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百年孤独百年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值