我正在尝试在新笔记本电脑上构建一个使用 Libtorch 的 C++ 项目,但在运行 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,我使用conda安装了Pytorch/Libtorch和GXX。项目本身是使用CMake构建的,然后运行Make显示上述错误。
我尝试过的事情:
dnf update glibc
我对如何从这里继续感到相当困惑。
还有一件事:运行 CMakeList 确实抛出了一个警告,而在我的另一台 Fedora 计算机上则没有
-- 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)
关于如何进行有什么建议吗?在编写自己的代码时,我在 glibc 的 stackexchange 上找到了一些建议,不确定如何解决 Pytorch/Libtorch 的问题。
在我的 conda 安装中更新了 Pytorch 和 GXX,使用 dnf 更新了 glibc。
您面临的问题似乎是由于 Libtorch 使用的 GLIBC 版本与您的 Fedora 系统上可用的 GLIBC 版本不匹配所致。错误消息“对 `memcpy@GLIBC_2.14' 的未定义引用”表明 Libtorch 正在寻找 GLIBC 版本 2.14,但您系统上可用的版本可能不同。
您可以尝试的一种方法是构建并链接与 Fedora 系统上可用的 GLIBC 版本兼容的 Libtorch 版本。您可能需要使用不同版本的 Libtorch 或设置具有所需 GLIBC 版本的虚拟环境。
此外,有关缺少 kineto_LIBRARY 的警告表明您的 Libtorch 安装中可能缺少或配置错误的库。确保您的 Libtorch 安装完整且设置正确。
如果问题仍然存在,您可以考虑联系 PyTorch 社区或您正在开发的项目的开发人员以获得进一步帮助。他们可能有更具体的指导来解决 Fedora 上的 GLIBC 与 Libtorch 的兼容性问题。