【发布时间】:2018-05-23 10:53:16
【问题描述】:
我正在尝试编译设备驱动程序,但出现以下错误,
并且所有后续标题都相同
ddd@ddd:~/Desktop$ make
make -C /lib/modules/4.13.0-19-generic/build M=/home/ddd/Desktop modules
make[1]: Entering directory '/usr/src/linux-headers-4.13.0-19-generic'
CC [M] /home/ddd/Desktop/message_slot.o
/home/ddd/Desktop/message_slot.c:23:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^~~~~~~~~
compilation terminated.
scripts/Makefile.build:309: recipe for target '/home/ddd/Desktop/message_slot.o' failed
make[2]: *** [/home/ddd/Desktop/message_slot.o] Error 1
Makefile:1546: recipe for target '_module_/home/ddd/Desktop' failed
make[1]: *** [_module_/home/ddd/Desktop] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.13.0-19-generic'
Makefile:5: recipe for target 'all' failed
make: *** [all] Error 2
ddd@ddd:~/Desktop$
我使用以下 makefile 编译程序:
obj-m := message_slot.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
问题是,通过运行小的 .c 代码:
#include <stdio.h>
#include <stdli.h>
int main(){
printf("test");
}
使用命令
gcc test.c -o 测试
一切都编译。
我怀疑它与内核头文件有关,但我已经按照指定下载了所有头文件。我正在运行 lubuntu 17.10
我错过了什么吗?
非常感谢
【问题讨论】:
-
我不认为这是重复的,因为我无法正确识别问题,但您完全解决了我的问题。非常感谢
-
@DsCpp:不确定您所说的“我无法正确识别问题”是什么意思,但是如果您在 Stack Overflow search 中输入错误消息(
stdio.h: No such file or directory),那么您在将用户空间标头包含到内核代码中时遇到了许多类似的问题。例如。这个:stackoverflow.com/questions/15662480/….
标签: c linux linux-kernel linux-device-driver