【问题标题】:Beyond Linux From Scratch: avrdude was compiled without usb supportBeyond Linux From Scratch:avrdude 是在没有 USB 支持的情况下编译的
【发布时间】:2021-10-19 19:23:35
【问题描述】:

出于兴趣和学习的目的,我根据www.linuxfromscratch.org上的描述从头开始构建Linux(LFS+BLFS,都是10.0版本)。

通常操作系统可以启动,我基本上可以使用它。有几处不太顺利,在此向高手请教。

我想开始使用 Atmel 微控制器的程序员 AVRDragon。为了在 Linux 上使用它,我使用了“avrdude”程序。我的目标是了解 avrdude 如何工作以及如何与操作系统交互。因此,我想从带有调试信息的源代码构建它。

要从源代码构建 avrdude,需要 libusb/libusb_1_0 和 libelf。我知道 libusb_1_0 是随 BLFS 一起安装的。 avrdude 要求 libusb 和/或 libusb_1_0。我不能说只有 libusb_1_0 是否有问题。 (libusb_1_0 比 libusb 更新,不是吗?)此外,我还安装了 libelf(由于安装了 libelf,我无法再构建内核,但现在这应该不是问题)。在内核中,启用了 USB 支持(设备驱动程序 -> USB 支持 -> 支持主机端 USB)。

我已经创建了一个 udev 规则:

# Dragon
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", GROUP="plugdev", MODE="0666"

...lsusb 是这样说的:

# lsusb
...
Bus 003 Device 006: ID 03eb:2107 Atmel Corp. AVR Dragon
...

另外,我使用脚本将示例应用程序编程到微控制器上,该微控制器在我的参考系统上运行。

但是,在我的 BLFS 上运行 avrdude 时,我收到一条错误消息,指出 avrdude 不是使用 USB 支持构建的:

# avrdude -p m328p -c dragon_isp -B5 -F -P usb -V -U flash:w:Debug/hello_world.elf
avrdude was compiled without usb support.

avrdude done.  Thank you.

上网查了一下,提示安装了上述先决条件并设置了udev规则。

我对 Linux 命令行、GCC 工具链和常用的 Linux 工具有很好的了解。但是我完全迷失了如何正确配置我的支持 USB 的 BLFS。有没有人可以给我一个关于如何解决这个问题的提示?非常感谢!

【问题讨论】:

  • 您能否在问题中添加确切的错误消息?我无法在谷歌上搜索提供的那个。
  • 嗨尼克,我在上面的描述中添加了确切的错误消息。

标签: linux libusb avrdude linux-from-scratch


【解决方案1】:

显然,要获得完整的功能,您需要同时 libusb-1.0 和 libusb-0.1。 configure.ac 脚本只为前者定义HAVE_LIBUSB_1_0,为后者定义HAVE_LIBUSB,而包含错误消息的*.c 文件只检查HAVE_LIBUSB

虽然当前的 BLFS 没有构建 libusb-0.1 的说明,但您可以查看 libusb-0.1.12 in BLFS 6.3 的说明。

【讨论】:

  • 编译libusb-0.1.12时,出现[-Werror=format-truncation=]错误。可以通过以下方式阻止它们:“make CLAGS=-Wno-format-truncation”
  • @ManfredHinter 啊,是的,糟糕的旧 "-Werror in release"...如果您遇到更多此类-Werror 生成的故障,您可以通过更多来防止它们一般CFLAGS=-Wno-error.
猜你喜欢
  • 2013-02-22
  • 2012-10-06
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 2012-04-19
  • 1970-01-01
  • 2011-08-09
相关资源
最近更新 更多