如何修复 Rust 中 `ethercat-sys v0.3.1` 的 "failed to run custom build command" 错误
问题
在尝试安装 ethercat 或 ethercat-sys crate 时,你会遇到以下问题:
ethercat-sys-build-error.txt
error: failed to run custom build command for `ethercat-sys v0.3.1`
Caused by:
process didn't exit successfully: `/home/uli/Nextcloud/Experimental/RS402/target/debug/build/ethercat-sys-c6763acfbe4bdda5/build-script-build` (exit status: 101)
--- stderr
thread 'main' panicked at /home/uli/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ethercat-sys-0.3.1/build.rs:8:46:
Please set the ETHERCAT_PATH env var to the location of a checkout of the Ethercat master after running configure: NotPresent
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace解决方案
ethercat-sys crate 是 ethercat crate 的依赖项,它需要一个本地 EtherCAT master 仓库的检出位置来构建其原生绑定。
要解决此问题,只需克隆 EtherCAT master 仓库并将 ETHERCAT_PATH 环境变量指向此检出的位置。由于 ethercat-sys crate 需要 config.h,仅克隆仓库是不够的,你还需要构建 EtherCAT master。
clone-ethercat.sh
git clone https://gitlab.com/etherlab.org/ethercat.git ~/.etherlab-ethercat
cd ~/.etherlab-ethercat
./bootstrap
./configure
make -j8现在你可以设置 ETHERCAT_PATH 环境变量。你可以在终端会话中临时设置,但我建议将其添加到 shell 配置文件(例如 ~/.bashrc 或 ~/.zshrc)中以永久生效。
set-ethercat-path.sh
export ETHERCAT_PATH="$HOME/.etherlab-ethercat"设置好 ETHERCAT_PATH 环境变量后,你应该就能构建依赖 ethercat crate 的 Rust 项目,而不会再遇到之前的错误。如果你已将 export 命令放入 shell 配置文件,请记得使用 source ~/.bashrc 或类似命令重新加载 shell 配置,或重启终端会话以使更改生效。
build-rust-project.sh
cargo buildIf this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow