无法验证生成的可执行文件是带有“cargo readobj”的 ARM 二进制文件:没有这样的子命令

Unable to verify that produced executable is an ARM binary with `cargo readobj`: no such subcommand

我正在学习嵌入式 Rust。我已经设置了环境,现在正在关注 Build It instructions.

当我通过 运行 命令

验证生成的可执行文件是 ARM 二进制文件时
cargo readobj --target thumbv7em-none-eabihf --bin led-roulette -- -file-headers

它产生一个错误:

error: no such subcommand: readobj

我也试过命令

cargo readelf -h target/thumbv7em-none-eabihf/debug/led-roulette 

它产生错误:

error: no such subcommand: readelf

在运行这些命令之前,您必须安装工具described in chapter 3

如果您已经这样做了,请确保您位于 src/05-led-roulette 目录中。

我们默认安装的cargo包没有提供readobj子命令,所以需要显式添加这个子命令:

cargo install cargo-binutils --vers 0.1.4

这里的大多数答案建议安装 cargo-binutils 的 0.1.4 版本来解决这个问题。虽然这可行,但推荐的方法是安装最新的稳定版本,然后安装 llvm-tools-preview 以提供所有缺少的命令:

$ cargo install cargo-binutils
$ rustup component add llvm-tools-preview

这在 cargo-binutils crate 中有记载。