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

Fedora 38下使用Libtorch编译C++项目遇GLIBC链接错误求助

基于Libtorch的C++项目编译错误:memcpy@GLIBC_2.14未定义引用

错误信息

执行make命令时触发链接错误:

/home/labuser/anaconda3/envs/Research/bin/../lib/gcc/x86_64-conda-linux-gnu/13.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/labuser/anaconda3/envs/Research/lib/python3.11/site-packages/torch/lib/libc10.so: undefined reference to `memcpy@GLIBC_2.14'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/learn.dir/build.make:101: learn] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/learn.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

环境信息

  • 操作系统:Fedora 38(系统glibc版本2.37)
  • 依赖管理:通过Conda安装PyTorch/Libtorch与GXX编译器
  • 构建工具:CMake
  • 对比验证:Fedora 37(glibc 2.36)环境下无此问题

已尝试操作

  • 执行dnf update glibc更新系统glibc
  • 更新Conda环境内PyTorch等组件至最新版本
  • 替换链接PyTorch官网下载的ABI兼容/非兼容版Libtorch头文件

CMake配置警告

执行CMake时出现如下警告:

-- Caffe2: Protobuf version 3.20.3
CMake Warning at /home/labuser/anaconda3/envs/Research/lib/python3.11/site-packages/torch/share/cmake/Torch/TorchConfig.cmake:22 (message):
  static library kineto_LIBRARY-NOTFOUND not found.
Call Stack (most recent call first):
  /home/labuser/anaconda3/envs/Research/lib/python3.11/site-packages/torch/share/cmake/Torch/TorchConfig.cmake:127 (append_torchlib_if_found)
  CMakeLists.txt:8 (find_package)

解决方案

1. 解决Conda与系统glibc的符号冲突

问题核心是Conda环境内的编译器优先链接了Conda自带的旧版本glibc符号,而非系统高版本glibc。可通过以下方式处理:

  • 在CMakeLists.txt中添加链接参数,强制包裹memcpy符号:
    target_link_libraries(your_target_name PRIVATE -Wl,--wrap=memcpy)
    
    此参数让链接器使用本地实现替代特定版本的memcpy符号,规避版本依赖问题。
  • 临时调整库加载优先级:激活Conda环境后执行export LD_LIBRARY_PATH=/lib64:$LD_LIBRARY_PATH,让系统库优先于Conda库加载(注意此操作可能影响Conda环境内其他依赖兼容性,需测试)。

2. 从源码编译适配当前glibc的PyTorch/Libtorch

若上述方法无效,可手动编译PyTorch适配系统环境:

  • 克隆PyTorch仓库并切换至目标版本分支
  • 在Conda环境中配置编译参数,绑定系统glibc与编译器:
    export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
    python setup.py build develop
    
    编译生成的Libtorch会完全适配当前系统的glibc版本,彻底解决符号引用问题。

3. 消除kineto库警告

该警告不影响项目编译运行,若需消除:

  • 安装kineto依赖:在Conda环境中执行conda install -c pytorch kineto
  • 或在CMakeLists.txt中添加配置禁用kineto查找:
    set(Torch_NO_KINETO ON)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 22:15:22