You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

torch-sys v0.8.0自定义构建命令执行失败求助

解决torch-sys v0.8.0编译失败(找不到torch/csrc/autograd/engine.h)的问题

问题重现

执行cargo run或cargo run --target x86_64-apple-darwin时,构建torch-sys v0.8.0失败,核心错误:

libtch/torch_api.cpp:1:9: fatal error: 'torch/csrc/autograd/engine.h' file not found

附带clang警告:-Wl,-rpath=... 'linker' input unused,已尝试重装PyTorch、更新conda但无效。

完整错误日志:

Compiling torch-sys v0.8.0
The following warnings were emitted during compilation:

warning: clang: warning: -Wl,-rpath=/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/lib: 'linker' input unused [-Wunused-command-line-argument]cargo:warning=clang: warning: -Wl,-rpath=/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/lib: 'linker' input unused [-Wunused-command-line-argument]
warning: libtch/torch_api.cpp:1:9: fatal error: 'torch/csrc/autograd/engine.h' file not found
warning: #include<torch/csrc/autograd/engine.h>
warning:         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
warning: 1 error generated.

error: failed to run custom build command for `torch-sys v0.8.0`

Caused by:
  process didn't exit successfully: `/Users/macabe/semantic-search/target/debug/build/torch-sys-e88d97111c03df15/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-env-changed=TORCH_CUDA_VERSION
  cargo:rerun-if-env-changed=LIBTORCH
  cargo:rustc-link-search=native=/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/lib
  cargo:rerun-if-changed=libtch/torch_api.cpp
  cargo:rerun-if-changed=libtch/torch_api.h
  cargo:rerun-if-changed=libtch/torch_api_generated.cpp.h
  cargo:rerun-if-changed=libtch/torch_api_generated.h
  cargo:rerun-if-changed=libtch/stb_image_write.h
  cargo:rerun-if-changed=libtch/stb_image_resize.h
  cargo:rerun-if-changed=libtch/stb_image.h
  cargo:rerun-if-env-changed=LIBTORCH_CXX11_ABI
  TARGET = Some("aarch64-apple-darwin")
  OPT_LEVEL = Some("0")
  HOST = Some("aarch64-apple-darwin")
  cargo:rerun-if-env-changed=CXX_aarch64-apple-darwin
  CXX_aarch64-apple-darwin = None
  cargo:rerun-if-env-changed=CXX_aarch64_apple_darwin
  CXX_aarch64_apple_darwin = None
  cargo:rerun-if-env-changed=HOST_CXX
  HOST_CXX = None
  cargo:rerun-if-env-changed=CXX
  CXX = None
  cargo:rerun-if-env-changed=CXXFLAGS_aarch64-apple-darwin
  CXXFLAGS_aarch64-apple-darwin = None
  cargo:rerun-if-env-changed=CXXFLAGS_aarch64_apple_darwin
  CXXFLAGS_aarch64_apple_darwin = None
  cargo:rerun-if-env-changed=HOST_CXXFLAGS
  HOST_CXXFLAGS = None
  cargo:rerun-if-env-changed=CXXFLAGS
  CXXFLAGS = None
  cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("true")
  CARGO_CFG_TARGET_FEATURE = Some("aes,crc,dit,dotprod,dpb,dpb2,fcma,fhm,flagm,fp16,frintts,jsconv,lor,lse,neon,paca,pacg,pan,pmuv3,ras,rcpc,rcpc2,rdm,sb,sha2,sha3,ssbs,vh")
  running: "c++" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-I" "/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/include" "-I" "/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/include/torch/csrc/api/include" "-Wl,-rpath=/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/lib" "-std=c++14" "-D_GLIBCXX_USE_CXX11_ABI=1" "-o" "/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtch/torch_api.o" "-c" "libtch/torch_api.cpp"
  running: "c++" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-I" "/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/include" "-I" "/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/include/torch/csrc/api/include" "-Wl,-rpath=/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/lib" "-std=c++14" "-D_GLIBCXX_USE_CXX11_ABI=1" "-o" "/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtch/fake_cuda_dependency.o" "-c" "libtch/fake_cuda_dependency.cpp"
  cargo:warning=clang: warning: -Wl,-rpath=/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/lib: 'linker' input unused [-Wunused-command-line-argument]cargo:warning=clang: warning: -Wl,-rpath=/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/lib: 'linker' input unused [-Wunused-command-line-argument]

  cargo:warning=libtch/torch_api.cpp:1:9: fatal error: 'torch/csrc/autograd/engine.h' file not found
  cargo:warning=#include<torch/csrc/autograd/engine.h>
  cargo:warning=        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  exit status: 0
  cargo:warning=1 error generated.
  exit status: 1

  --- stderr


  error occurred: Command "c++" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "-arch" "arm64" "-I" "/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/include" "-I" "/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/include/torch/csrc/api/include" "-Wl,-rpath=/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtorch/libtorch/lib" "-std=c++14" "-D_GLIBCXX_USE_CXX11_ABI=1" "-o" "/Users/macabe/semantic-search/target/debug/build/torch-sys-3f4db2fcb77e7c54/out/libtch/torch_api.o" "-c" "libtch/torch_api.cpp" with args "c++" did not execute successfully (status code exit status: 1).

解决方案

1. 匹配torch-sys与libtorch版本

torch-sys的版本和PyTorch版本严格对应:torch-sys v0.8.0必须搭配PyTorch 1.8.x版本,不能用最新版PyTorch。自动下载的libtorch可能版本不对,建议手动下载对应版本的libtorch(注意匹配你的macOS架构:arm64或x86_64)。

2. 手动设置LIBTORCH环境变量

解压下载的libtorch包后,在终端执行以下命令(替换为你的libtorch路径):

# 设置libtorch路径
export LIBTORCH=/Users/your-name/path/to/libtorch
# macOS下设置动态库路径
export DYLD_LIBRARY_PATH=${LIBTORCH}/lib:$DYLD_LIBRARY_PATH

如果是编译x86_64目标,确保下载的是x86_64版本的libtorch,并且用Rosetta打开终端执行命令。

3. 清理cargo缓存

删除旧的构建缓存,避免残留文件干扰:

cargo clean

4. 指定对应架构的C++编译器

如果跨架构编译(比如M系列芯片编译x86_64),需要指定编译器的架构:

# 编译x86_64目标时设置
export CXX="clang++ -arch x86_64"

5. 排除conda环境干扰

暂时退出conda环境,避免conda的PyTorch与libtorch冲突:

conda deactivate

然后重新执行cargo run或cargo run --target x86_64-apple-darwin。


内容的提问来源于stack exchange,提问作者Macabe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 04:55:33