Wie man Rust behebt: failed to run custom build command for `ethercat-sys v0.3.1`
Problem
Beim Versuch, die ethercat- oder die ethercat-sys-Crate zu installieren, begegnen Sie dem folgenden Problem:
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 backtraceLösung
Die ethercat-sys-Crate, die eine Abhängigkeit der ethercat-Crate ist, benötigt den Ort eines lokalen Checkouts des EtherCAT-Master-Repositories, um ihre nativen Bindings zu bauen.
Um dieses Problem zu beheben, klonen Sie einfach das EtherCAT-Master-Repository und setzen Sie die ETHERCAT_PATH-Umgebungsvariable auf den Ort dieses Checkouts. Da die ethercat-sys-Crate config.h benötigt, reicht das bloße Klonen des Repositories nicht aus; Sie müssen auch den EtherCAT-Master bauen.
git clone https://gitlab.com/etherlab.org/ethercat.git ~/.etherlab-ethercat
cd ~/.etherlab-ethercat
./bootstrap
./configure
make -j8Jetzt können Sie die ETHERCAT_PATH-Umgebungsvariable setzen. Sie können dies temporär in Ihrer Terminal-Sitzung tun, aber ich empfehle, es permanent zu tun, indem Sie es zu Ihrer Shell-Konfigurationsdatei hinzufügen (z.B. ~/.bashrc oder ~/.zshrc).
export ETHERCAT_PATH="$HOME/.etherlab-ethercat"Mit der gesetzten ETHERCAT_PATH-Umgebungsvariable sollten Sie nun Ihr Rust-Projekt, das von der ethercat-Crate abhängt, bauen können, ohne den vorherigen Fehler zu encounteren. Denken Sie daran, Ihre Shell-Konfiguration mit source ~/.bashrc oder ähnlichem neu zu laden, oder starten Sie Ihre Terminal-Sitzung neu, um die Änderungen anzuwenden, wenn Sie den Export-Befehl in Ihre Shell-Konfigurationsdatei platziert haben.
cargo build