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
相关产品推荐
相关产品推荐

