You need to enable JavaScript to run this app. RHEL7下conda环境gcc8.4编译报clock_gettime@GLIBC_2.17未定义错误
优惠活动
大模型
产品
解决方案
定价
更多

RHEL7下conda环境gcc8.4编译报clock_gettime@GLIBC_2.17未定义错误

问题解答

1 libstdc++引用高版本glibc符号的原因

  • 你当前conda环境安装的是适配CentOS 6(glibc 2.12)的cos6系列编译链,配套的libstdc++.so.6.0.25本身只依赖glibc 2.12的符号,但环境中实际生效的是更高版本的libstdc++.so.6.0.28。
  • 该高版本libstdc是针对glibc >=2.17编译的,内置了对clock_gettime@GLIBC_2.17、aligned_alloc@GLIBC_2.16等符号的依赖,且libstdc的软链指向错误导致编译时优先加载了这个不兼容的高版本库。
  • 该版本冲突通常是后续安装其他conda包时,自动升级libstdcxx-ng/libgcc-ng包导致的。

2 不破坏conda沙箱的编译解决方案

方案1:修复编译链版本匹配(最推荐)

直接将libstdcxx等依赖回退到和当前cos6编译链配套的版本,全程使用conda源的包,完全保留沙箱隔离特性:

  • 执行重装命令:
conda install --force-reinstall libstdcxx-ng=9.3.0 libgcc-ng=9.3.0
  • 重装完成后软链会自动修复,使用原编译命令即可正常编译:
${CONDA_PREFIX}/bin/x86_64-conda_cos6-linux-gnu-g++ ./a.cpp -lrt

方案2:切换为适配RHEL7的cos7编译链

你使用的系统是RHEL7,原生glibc版本为2.17,直接切换conda的cos7(CentOS7)系列编译链,可从根源解决版本兼容问题,所有依赖均来自conda环境:

  • 执行安装命令:
conda install gcc_linux-64=*_cos7_* gxx_linux-64=*_cos7_* sysroot_linux-64=2.17
  • 安装完成后直接调用conda环境内的g++编译即可,无需额外参数。

方案3:临时添加编译兼容参数

如果不能修改现有环境的包版本,可以在编译时添加参数强制兼容glibc 2.12的符号:

${CONDA_PREFIX}/bin/x86_64-conda_cos6-linux-gnu-g++ ./a.cpp -lrt -Wl,--wrap=aligned_alloc -Wl,--wrap=clock_gettime

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 22:30:03