用于libusb程序的makefile

时间:2015-03-17 12:10:43

标签: c makefile linux-kernel libusb

我使用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

不确定是否需要将任何头文件带到我的工作目录或什么。请提供建议。

1 个答案:

答案 0 :(得分:0)

好的,所以这个链接在某种程度上澄清了我的怀疑:

[] [1] error: stdio.h: No such file or directory error during make

它说&#34; stdio.h&#34;并且所有内核空间都不存在,因此会出现这样的错误。此外,显然我的模块不包含任何printf所以我想我不需要&#34; stdio.h&#34;。

但它确实广泛使用了libusb。那么,有没有办法真正创建这个模块。