buildroot编译驱动

buildroot编译驱动

我正在使用 Buildroot 来编译嵌入式 Linux。它工作得很好,因为我有目标 Makefile 配置,但现在我需要 USB 设备的驱动程序。我设法使用 buildroots 在我的主机 Linux 上编译 Qt appilactions(c++) 以瞄准 Linux /output/host/usr/bin/arm-none-linux-gnueabi-c++。效果很好。

现在我正在尝试编译c文件这位司机

我这样称呼它:

/output/host/usr/bin/arm-none-linux-gnueabi-gcc -Wall -D__KERNEL__ -DMODULE -I/home/buildroot-2012.08/output/build/linux-2.6.35.3/include -DMODVERSIONS -include /home/buildroot-2012.08/output/build/linux-2.6.35.3/include/config/modversions.h -I /home/buildroot-2012.08/output/build/linux-2.6.35.3/drivers/usb/serial/ -O   -c -o ftdi_sio.o ftdi_sio.c

我收到错误:

输出/build/linux-2.6.35.3/include/linux/linkage.h:5:致命错误:asm/linkage.h:没有这样的文件或目录

  1. 我应该如何配置驱动程序编译?
  2. 是否有其他方法可以为目标 linux 做到这一点?也许我没有以正确的方式做这件事。

答案1

asm/是指向您的目标体系结构的符号链接,如果它不存在,则可能您在内核构建目录中缺少某些目标configure(如果不存在,也许module_headers可以做到)

从您的问题中不清楚您是否使用命令行、自定义 Makefile 或 Buildroot 包(您使用的是哪个版本的 Buildroot)。

您的命令行正在构建一个 C 对象.o而不是内核模块(.o是内核模块的扩展,直到版本 2.4,从 2.6 开始是.ko

如果您不确定这些标志会增加内核模块构建、构建和日志的详细程度,请使用相同的标志。

内核有它的方法构建模块并且 Buildroot 对于包有它的方式,最好的可能是创建一个新的包来构建你的模块(看看是否已经有其他一些包来构建模块)。

这个例子有点旧,但也许有帮助。

编辑

模块ftdi_sio.ko生成到目录中/lib/modules/$(uname -r)/kernel/drivers/usb/serial/

builtin但也可以配置为不.ko生成,检查符号USB_SERIAL_FTDI_SIO在你的配置(应该是y内置m模块)。

/proc如果它是内置的或插入的,则在运行时目标上应该有一个接口,称为ftdi_sio, 找到它。

相关内容