从源码编译libtorch得到非预期目录结构问题求助
编译出标准libtorch目录结构的解决方案
你当前得到的是编译中间工作目录,而非官方下载的libtorch那样的分发结构,需要执行cmake的安装步骤来生成干净的标准目录。以下是具体操作:
方法1:基于现有编译产物生成标准结构
进入你现在看到的满是中间文件的编译目录,执行cmake安装命令,指定输出路径:
# 替换<目标路径>为你想要存放标准libtorch的目录,比如../libtorch_official cmake --install . --prefix <目标路径>
执行完成后,<目标路径>下就会生成bin/、include/、lib/、share/的标准结构,且包含所有必要的头文件(包括torch/csrc/autograd/下的内容)。
方法2:编译时直接指定安装路径(一步到位)
放弃直接用build_libtorch.py,手动创建单独的编译目录并指定安装前缀,避免中间文件干扰:
# 创建编译目录和最终输出目录 mkdir build_libtorch && mkdir libtorch_final cd build_libtorch # 执行cmake配置,替换<>中的路径为你的实际路径 cmake ../pytorch -DCMAKE_INSTALL_PREFIX=../libtorch_final \ -DBUILD_LIBTORCH=ON \ -DBUILD_TORCH=ON \ -DBUILD_CAFFE2=1 \ -DBUILD_TEST=0 \ -DCMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"} \ -DDEBUG=0 \ -DMAX_JOBS=16 \ -DUSE_CUDA=1 \ -DUSE_CUDNN=1 \ -DCUDA_HOME=<你的CUDA根目录> \ -DNVCC_EXECUTABLE=<你的NVCC可执行文件路径> \ -DCUDNN_LIB_DIR=<你的CUDNN库目录> \ -DCUDNN_INCLUDE_DIR=<你的CUDNN头文件目录> \ -DCUDNN_LIBRARY=<你的CUDNN库文件路径> # 编译并安装 make -j16 make install
完成后,../libtorch_final就是和官网下载一致的libtorch结构。
关键说明
build_libtorch.py生成的是编译工作目录,包含所有中间编译产物、cmake临时文件,并非分发用的libtorch包,必须执行install步骤才能提取出干净的头文件、库和工具。- 添加
BUILD_LIBTORCH=ON和BUILD_TORCH=ON会确保编译并安装完整的libtorch组件,包括torch/csrc下的头文件,解决你遇到的头文件缺失问题。
内容的提问来源于stack exchange,提问作者mwlon
相关产品推荐
相关产品推荐

