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++)
export CUDAHOSTCXX=$(which x86_64-conda-linux-gnu-g++)  # 如果有 CUDA 编译

使用如下命令,会显示安装的版本信息

$CC --version

在这里插入图片描述

应该显示 GCC 9.x 或更新版本


二、手动编译安装 libxcrypt (crypt.h)

如果在 PyTorch 或 C++/CUDA 扩展编译时报:

fatal error: crypt.h: No such file or directory

那么需要自行编译 libxcrypt:

1. 下载和解压

wget https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.gz
tar -xzf libxcrypt-4.4.36.tar.gz
cd libxcrypt-4.4.36

2. 配置 prefix 安装到 Conda 环境

./configure --prefix=$CONDA_PREFIX
make -j$(nproc)
make install

3. 配置环境变量

确保 include 和 lib 目录可被编译器找到:

export CFLAGS="-I$CONDA_PREFIX/include"
export CXXFLAGS="-I$CONDA_PREFIX/include"
export LDFLAGS="-L$CONDA_PREFIX/lib"
export CPATH="$CONDA_PREFIX/include"
export LIBRARY_PATH="$CONDA_PREFIX/lib"
export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH"

建议写入 ~/.bashrc

echo 'export CPATH="$CONDA_PREFIX/include"' >> ~/.bashrc
echo 'export LIBRARY_PATH="$CONDA_PREFIX/lib"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc

三、确认 crypt.h 已安装

ls $CONDA_PREFIX/include/crypt.h

如果有这个文件,说明安装成功。


四、手动编译技巧

如果 PyTorch JIT 扩展仍然报 crypt.h 错误,确保正确指定上面环境变量,并且 gcc/g++ 是 conda 环境内的路径

which gcc
which g++

如果还是 /usr/bin/gcc,请重新 export CC / CXX,确保使用 conda 安装的版本。


可选:指定 torch.utils.cpp_extension 使用的 compiler

如果是 PyTorch 编译扩展,可以指定 JIT 编译使用 gcc 和 include 路径:

from torch.utils.cpp_extension import load
import os

os.environ["CC"] = "/path/to/your/gcc"
os.environ["CXX"] = "/path/to/your/g++"
os.environ["CFLAGS"] = f"-I{os.environ['CONDA_PREFIX']}/include"
os.environ["LDFLAGS"] = f"-L{os.environ['CONDA_PREFIX']}/lib"

load(...)

总结

这套进程完全避免 root 权限,在 Conda 环境内部装好 gcc/与 crypt.h,适用于 CUDA / PyTorch 合成扩展 / JIT编译需求。

### 如何在 Conda 环境安装与之兼容的 GCC 编译器 为了确保 GCC 版本与当前使用的 Conda 环境兼容,可以按照以下方法操作: #### 方法一:通过 Conda 安装特定版本的 GCC 可以直接指定所需的 GCC 版本来进行安装。例如,如果需要安装 GCC 5.4.0,则可以通过以下命令完成: ```bash conda install gcc=5.4.0 ``` 此方式会自动解析依赖关系并安装适合该环境GCC 版本[^1]。 #### 方法二:手动下载并离线安装 如果没有网络连接或者希望减少在线等待时间,可以选择手动下载目标文件后再执行安装。具体步骤如下: 1. 访问 Anaconda 的仓库页面找到对应平台下的 `gcc-5.4.0-0.tar.bz2` 文件地址; 2. 使用工具如 wget 下载至本地目录: ```bash wget https://repo.anaconda.com/pkgs/main/linux-64/gcc-5.4.0-0.tar.bz2 ``` 3. 利用 Conda 命令加载已获取的包: ```bash conda install /path/to/gcc-5.4.0-0.tar.bz2 ``` #### 验证安装成功与否 无论采用哪种方式进行安装,在完成后都应验证新加入的组件是否正常工作。比如尝试运行简单的 C/C++ 测试程序来确认编译链路无误。 另外值得注意的是,某些项目可能还额外指定了其他库作为构建需求的一部分。像 scikit-learn 这样的机器学习框架通常也需要配套的支持软件才能发挥全部功能[^3];而另一些场景下则需引入第三方渠道资源(例如 Bioconda 中提供的扩展选项)以便满足特殊用途的需求[^2]。 ```python import platform print(platform.python_compiler()) ``` 上述脚本能帮助判断目前所处 Python 解释器背后实际调用了哪个系列的编译引擎。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

百年孤独百年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值