cmake-链接静态库pytorch在构建过程中找不到其内部函数

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

我正在尝试使用cmake构建程序。由于多种原因,该程序必须使用静态库而不是动态库来构建,而我需要使用PyTorch,所以这就是我所做的:

  1. 下载并安装了PyTorch静态库(我在libtorch.a的正确路径中找到了/home/me/pytorch/torch/lib
  2. 用以下内容制成CMakeLists.txt
cmake_minimum_required(VERSION 3.5.1 FATAL_ERROR)
project(example-app LANGUAGES CXX)
find_package(Torch REQUIRED)
add_executable(example-app example-app.cpp argparse/argparse.cpp)
target_link_libraries(example-app "${TORCH_LIBRARIES}" -static -fopenmp)
set_property(TARGET example-app PROPERTY CXX_STANDARD 14)

FYI,example-app.cpp是具有主要功能的文件,argparse/是具有一些在example-app.cpp中调用的功能的源代码的目录>

[直到cmake -DCMAKE_PREFIX_PATH=/home/me/pytorch/torch ..才有效,但随后的build会产生一些错误,表示找不到对某些功能的引用,即以fbgemm::开头的功能。 fbgemm(据我所知)是用于实现PyTorch的某种GEMM库。

在我看来,在链接静态PyTorch库时,它的内部库如fbgemm的东西未正确链接,但我不是cmake的专家,老实说也不完全确定。

我是在做错什么,还是有解决此问题的方法?任何帮助或朝正确方向的推动将不胜感激。

P.S。

  1. 确切的错误尚未发布,因为它太长了,但主要由undefined reference to ~错误组成。如果查看错误消息可能对某些人有帮助,我很乐意编辑问题并将其发布。

  2. [build并运行文件可以正常工作,如果我从代码without

  3. 中删除了需要库功能的部分,则从#include <torch/torch.h>中注释了example-app.cpp

我正在尝试使用cmake构建程序。由于多种原因,该程序必须使用静态库而不是动态库来构建,而我需要使用PyTorch,所以这就是我要做的事情:...

cmake pytorch static-libraries static-linking libtorch
1个回答
0
投票

最近通过PyTorch的静态链接经历了类似的过程,说实话这还不太好。

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