我正在尝试使用以下指令编译示例 pytroch c++ 项目:
https://pytorch.org/cppdocs/installing.html
当我到达呼叫点时:
cmake -DCMAKE_PREFIX_PATH=/绝对/路径/到/libtorch .. cmake --build 。 --配置发布
我收到错误:
ld: unknown option: --no-as-needed
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [BLOCK_READER] Error 1
make[1]: *** [CMakeFiles/BLOCK_READER.dir/all] Error 2
make: *** [all] Error 2
看起来问题是链接器不理解该选项
--no-as-needed
。
经过一些研究,似乎较新版本的链接器支持此选项,但不是我拥有的版本。
所以我的问题是如何将链接器更新到支持此选项的版本?
我使用的是 Apple M1 (BigSur)..
据我了解,ld是gcc的一部分,所以我可以只更新gcc吗?
顺便说一句,这是我的 cmake CMakeLists.txt
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(block_reader)
# Setup Torch
set(CMAKE_CXX_COMPILER "/usr/bin/g++" CACHE STRING "C++ compiler" FORCE)
set(CMAKE_LINKER "/usr/bin/ld" CACHE STRING "" FORCE)
set(CMAKE_PREFIX_PATH /Users/username/Downloads/libtorch)
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")
# Setup Torch
add_executable(BLOCK_READER main.cpp)
target_include_directories(BLOCK_READER PRIVATE /src)
set_property(TARGET BLOCK_READER PROPERTY CXX_STANDARD 14)
target_link_libraries(BLOCK_READER "${TORCH_LIBRARIES}")
我使用的是 M3 MacBook (Sonoma),在按照 https://pytorch.org/cppdocs/installing.html 中的教程进行操作时遇到了同样的问题。当我注意到这个示例命令中的链接时,我最终解决了这个问题
wget https://download.pytorch.org/libtorch/nightly/cpu/libtorch-shared-with-deps-latest.zip
指向
libtorch
的 Linux 发行版,这会混淆 CMake 并导致它添加 Linux 链接器选项。在我访问 PyTorch 下载网站:https://pytorch.org/cppdocs/installing.html 并下载了与我的正确系统和正确架构相对应的
libtorch
版本后,这个问题就消失了。系统(因为您使用的是 M1,您可能也需要 arm64
版本)。