【问题标题】:Linker error with Libtorch, Cmake and CLionLibtorch、Cmake 和 CLion 的链接器错误
【发布时间】:2023-01-27 03:23:20
【问题描述】:

我刚开始使用 libtorch,似乎遇到了一个相当严重的链接器问题。以前,我至少能够使用 torch(其他人创建的)构建其他项目,但现在我已经尝试创建自己的简单文件,似乎没有任何东西可以构建了。

我已经在我的根目录中手动安装了最新的 MacOS 版本: /用户/jlenz/libtorch/share/cmake/火炬

我正在使用 CLion 并具有以下 CmakeLists.txt:

cmake_minimum_required(VERSION 3.23)
project(midi_plugin)

set(CMAKE_CXX_STANDARD 17)
add_executable(midi_plugin main.cpp)

set(CMAKE_PREFIX_PATH "~/libtorch/share/cmake")
find_package(Torch REQUIRED)

target_link_libraries(midi_plugin "${TORCH_LIBRARIES}")

值得注意的一件事是,虽然 cmake“成功”构建,但它在过程中显示了这一点:

-- MKL_ARCH: intel64
-- MKL_ROOT /Users/jlenz/opt/miniconda3
-- MKL_LINK: dynamic
-- MKL_INTERFACE_FULL: intel_ilp64
-- MKL_THREADING: intel_thread
-- MKL_MPI: mpich

一旦我尝试构建项目(这只是包含 torch 的“hello world”),我收到以下错误:

FAILED: midi_plugin 
: && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk -mmacosx-version-min=12.5 -Wl,-search_paths_first -Wl,-headerpad_max_install_names  CMakeFiles/midi_plugin.dir/main.cpp.o -o midi_plugin  -Wl,-rpath,/Users/jlenz/libtorch/lib  /Users/jlenz/libtorch/lib/libc10.dylib  /Users/jlenz/libtorch/lib/libkineto.a  /Users/jlenz/libtorch/lib/libtorch.dylib  /Users/jlenz/libtorch/lib/libtorch_cpu.dylib  /Users/jlenz/libtorch/lib/libc10.dylib  -lmkl_intel_ilp64  -lmkl_core  -lmkl_intel_thread && :
ld: library not found for -lmkl_intel_ilp64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

有人知道如何解决这个问题吗?我曾尝试与一位经常使用 libtorch 的同事一起解决这个问题,但他也无法确定问题所在。提前谢谢了。

【问题讨论】:

  • 如果你打算使用 miniconda 的 MKL,你也应该使用 miniconda 的 libtorch。
  • 如果 MKL 是 PyTorch 的可选依赖项,您可以在 CMake 配置命令行中设置 -DCMAKE_DISABLE_FIND_PACKAGE_MKL=ON。如果您这样做,请从一个干净的构建目录开始。
  • @AlexReinking 在我的 cmake 脚本中,我从不指定在哪里可以找到 MKL,在我的同事中也是如此。知道为什么它会出现在那里(而不是我的 torch 目录)吗?或者我是否需要它?
  • torch 包正在寻找 MKL 作为依赖项。我不知道您的火炬构建是否绝对需要它,或者它是否正在寻找它作为可选功能。

标签: c++ cmake pytorch clion libtorch


【解决方案1】:

在这里发布我的解决方案以防其他人遇到类似问题。 事实证明问题出在我的 brew 安装 torch 上,它被隐式引用了。要修复它,我所要做的就是:

brew安装pytorch

它请求允许覆盖一些有问题的文件,我同意了。之后,我所有的 Torch 项目都运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 2017-06-06
    • 2020-05-14
    • 1970-01-01
    • 2017-04-22
    • 2020-09-19
    • 1970-01-01
    相关资源
    最近更新 更多