楼下的房东 发表于 2012-09-15 22:57

stdio.h no such file!!!!!!!编译驱动发生这个错误

本帖最后由 楼下的房东 于 2012-09-15 23:04 编辑

我现在在编写个驱动程序。#include <stdio.h>
    #include <string.h>
    #include <fcntl.h>
    #include <errno.h>
    #include <termios.h>
    #include <unistd.h>
    #include <xdo.h>
    #include <X11/Xlib.h>
    #include <X11/keysym.h>前面include了这么一段话。当makefile的时候。显示没有相应的stdio.h。 不是没有装build-essential. 这些要include的.h文件全在usr/include下面。本来没有的也装了。现在用最普通的Makefile编译ifneq ($(KERNELRELEASE),)
    obj-m        := b.o

else
       
    KDIR        := /lib/modules/$(shell uname -r)/build
    PWD                := $(shell pwd)

    default:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
    endif在终端中显示make -C /lib/modules/3.2.0-29-generic/build SUBDIRS=/media/SYSTEM/a modules
make: Entering directory `/usr/src/linux-headers-3.2.0-29-generic'
CC /media/SYSTEM/a/b.o
/media/SYSTEM/a/b.c:1:23: fatal error: stdio.h: No such file or directory
compilation terminated.
make: *** Error 1
make: *** Error 2
make: Leaving directory `/usr/src/linux-headers-3.2.0-29-generic'
make: *** Error 2我查过我编译成功的例子。所有编译成功的。都是include <linux/*.h>这种格式的。然后.h文件一般都在源码中有。而在usr/include下面没有的。而这次要include的文件全在usr/include下。个人绝得是include的地址搞错了。但是又不知到Makefile如何修改。网上大多是内核2.4版本的Makefile资料根本就没用。请各位看看是怎么回事。

ShadowStar 发表于 2012-09-17 23:47

对于编译内核模块,引用的头文件并不是系统的/ust/include下的文件,而是kernel source下的include目录中的文件。
页: [1]
查看完整版本: stdio.h no such file!!!!!!!编译驱动发生这个错误