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

Muh*_*mer 5 rust rust-cargo

我正在学习嵌入式 Rust。我已经设置了环境,现在正在按照Build It 说明进行操作

当我通过运行命令验证生成的可执行文件是 ARM 二进制文件时

cargo readobj --target thumbv7em-none-eabihf --bin led-roulette -- -file-headers
Run Code Online (Sandbox Code Playgroud)

它产生一个错误:

error: no such subcommand: readobj
Run Code Online (Sandbox Code Playgroud)

我也试过命令

cargo readelf -h target/thumbv7em-none-eabihf/debug/led-roulette 
Run Code Online (Sandbox Code Playgroud)

它生成错误:

error: no such subcommand: readelf
Run Code Online (Sandbox Code Playgroud)

小智 5

在运行这些命令之前,您必须按照第 3 章中的说明安装工具。

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


Jaw*_*abi 5

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

cargo install cargo-binutils --vers 0.1.4
Run Code Online (Sandbox Code Playgroud)


dor*_*asu 5

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

$ cargo install cargo-binutils
$ rustup component add llvm-tools-preview
Run Code Online (Sandbox Code Playgroud)

这记录在cargo-binutils crate中。