Mac 上的约会链接器 ld

问题描述 投票:0回答:1

我正在尝试使用以下指令编译示例 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}")
cmake clang libtorch
1个回答
0
投票

我使用的是 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
版本)。

© www.soinside.com 2019 - 2024. All rights reserved.