首页 > 解决方案 > 为什么编译器在 ioctls crate 中找不到记录的函数?

问题描述

我正在尝试使用ioctls crate 的功能。我将它添加到 Cargo.toml 中:

[dependencies]
ioctls = "0.6.1"

我这样打电话:

ioctls::spi_ioc_wr_max_speed_hz(fd, &speed);

但我明白了

error[E0425]: cannot find function `spi_ioc_wr_max_speed_hz` in crate `ioctls`
   --> src/w25q.rs:127:17
    |
127 |         ioctls::spi_ioc_wr_max_speed_hz(fd, &speed);
    |                 ^^^^^^^^^^^^^^^^^^^^^^^ not found in `ioctls`

该函数存在并且是pub:https ://docs.rs/ioctls/0.6.1/ioctls/fn.spi_ioc_wr_max_speed_hz.html

标签: rust

解决方案


您在docs.rs上看到的文档是基于目标工具链和功能集构建的,通常是最常见和/或最广泛的。对于大多数板条箱来说,这并不重要,但对于较低级别的实用程序,它可能会产生误导。您可以在顶部栏中更改目标平台(如果由 crate 作者生成)。

许多ioctls功能仅适用于 x86_64 架构。您可以在此处i686查看架构的文档,以了解更多您期望的内容。我对这个缺失功能​​的建议解决方案或解决方法知之甚少。ARMioctls

将来,如果您想查看预期的确切文档,请在本地生成和查看它们(如果尚未设置目标架构,则使用目标架构):

cargo doc --target armv7-unknown-linux-gnueabihf --open

推荐阅读