如何修复 cargo 崩溃:error: failed to run custom build command for `hdf5-sys v0.8.1`
问题
在执行 cargo build 或 cargo run 时,你会看到类似如下的错误信息:
cargo-hdf5-sys-error.txt
error: failed to run custom build command for `hdf5-sys v0.8.1`
Caused by:
process didn't exit successfully: `/home/uli/dev/Versatile/RustyMatrix/target/debug/build/hdf5-sys-555129b7288a757c/build-script-build` (exit status: 101)
--- stdout
Attempting to find HDF5 via pkg-config...
cargo:rerun-if-env-changed=HDF5_NO_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG
cargo:rerun-if-env-changed=HDF5_STATIC
cargo:rerun-if-env-changed=HDF5_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
--- stderr
thread 'main' (963963) panicked at /home/uli/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/hdf5-sys-0.8.1/build.rs:548:13:
Unable to locate HDF5 root directory and/or headers.
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...解决方案
你的 Rust 项目依赖 hdf5-sys crate,而该 crate 又依赖系统的 hdf5 库。
虽然你可以通过 sudo apt -y install libhdf5-dev 来安装它,但根据你的 Ubuntu 版本,可能会安装一个 hdf5-sys crate 不支持的版本。
因此,我建议修改你的 Cargo.toml,显式启用 static feature,直接编译一个兼容版本的 libhdf5。
Cargo.toml
hdf5 = "0.8.1"
hdf5-sys = { version = "0.8.1", features = ["static"] }之后,你可以重新运行 cargo 命令。
Check out similar posts by category:
Rust
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow