我使用libusb创建了一个C程序,我使用以下命令编译它:
gcc -o usbtest.o usbtest.c -lusb-1.0
该计划工作正常。接下来,我将“usbtest.c”的代码添加到内核模块(usbmod.c)中,并且我遇到了make文件。我不确定我应该在“所有”部分传递什么命令。这就是我所做的:
obj-m := usbmod.o
KERNEL_DIR = /lib/modules/$(shell uname -r)/build
PWD = $(shell pwd)
all:
$(MAKE) -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules
clean:
rm -rf *.o *.ko *.mod.* *.symvers *.order *-
运行make后,我收到以下错误:
anubhav@anubhav-Inspiron-3421:~/Desktop/usb$ make
make -C /lib/modules/3.13.0-46-generic/build SUBDIRS=/home/anubhav/Desktop/usb modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-46-generic'
CC [M] /home/anubhav/Desktop/usb/usbmod.o
/home/anubhav/Desktop/usb/usbmod.c:3:19: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^
compilation terminated.
make[2]: *** [/home/anubhav/Desktop/usb/usbmod.o] Error 1
make[1]: *** [_module_/home/anubhav/Desktop/usb] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-46-generic'
make: *** [all] Error 2
不确定是否需要将任何头文件带到我的工作目录或什么。请提供建议。
答案 0 :(得分:0)
好的,所以这个链接在某种程度上澄清了我的怀疑:
[] [1] error: stdio.h: No such file or directory error during make
它说&#34; stdio.h&#34;并且所有内核空间都不存在,因此会出现这样的错误。此外,显然我的模块不包含任何printf所以我想我不需要&#34; stdio.h&#34;。
但它确实广泛使用了libusb。那么,有没有办法真正创建这个模块。