Beyond Linux From Scratch:avrdude 是在没有 USB 支持的情况下编译的

Beyond Linux From Scratch: avrdude was compiled without usb support

出于兴趣和学习目的,我根据 www.linuxfromscratch.org.

上的描述从头开始构建 Linux(LFS+BLFS,均为 10.0 版本)

总的来说OS可以启动,我基本上可以使用它。有一些不顺的地方,在此向各位高手请教

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

要从源代码构建 avrdude,需要 libusb/libusb_1_0 和 libelf。我知道 libusb_1_0 是随 BLFS 安装的。 avrdude 要求 libusb and/or 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
...

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

但是,运行 avrdude 在我的 BLFS 上,我收到一条错误消息,即 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。有没有人可以给我提示如何解决这个问题?非常感谢!

显然,要获得全部功能,您需要 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.