You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译PyTorch时Conda环境下CMake CXX Compiler报错求助

解决PyTorch编译时memcpy@GLIBC_2.14未定义引用问题

核心原因

conda-forge的gcc 9.5.0编译出的代码依赖较高版本的GLIBC符号,但系统自带的libstdc++.so版本偏低,或是环境中libstdc++的路径优先级冲突,导致链接阶段无法找到对应符号。

具体解决步骤

1. 强制使用conda环境内的libstdc++

编译前设置环境变量,让编译器优先调用conda环境自带的libstdc++,避免使用系统版本:

export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
export CXXFLAGS="-Wl,-rpath,$CONDA_PREFIX/lib $CXXFLAGS"

执行完上述命令后,重新启动CMake配置和编译流程。

2. 降级gcc版本适配系统GLIBC

若系统GLIBC版本低于2.14(可通过ldd --version查看),可降级conda环境的gcc到对GLIBC依赖更低的版本,比如7.x系列:

conda install -c conda-forge gcc=7.5.0 gxx=7.5.0

重新激活环境后,再重新配置PyTorch编译参数。

3. 手动指定libstdc++路径给CMake

运行cmake时显式指定链接conda环境的libstdc++:

cmake .. -DCMAKE_CXX_FLAGS="-Wl,-rpath,$CONDA_PREFIX/lib" \
         -DCMAKE_EXE_LINKER_FLAGS="-Wl,-rpath,$CONDA_PREFIX/lib"

若使用PyTorch的setup.py编译,可先设置环境变量再执行安装:

export CMAKE_PREFIX_PATH=$CONDA_PREFIX
python setup.py install

4. 升级系统GLIBC(可选,需谨慎)

若具备系统权限,可直接升级系统GLIBC到2.14及以上版本,但此操作可能影响系统其他程序,需提前备份。也可通过源码编译GLIBC并指定独立安装路径,编译PyTorch时指向该路径的库文件。

环境验证方法

编译前可先测试C++编译器是否正常工作:

echo '#include <iostream>
int main() {
    char src[10] = "test";
    char dst[10];
    memcpy(dst, src, 5);
    std::cout << dst << std::endl;
    return 0;
}' > test.cpp
g++ test.cpp -o test
./test

若程序正常输出"test",说明编译器环境无问题,可继续PyTorch编译。

内容的提问来源于stack exchange,提问作者DAKSH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 16:22:08