当前位置: 技术问答>linux和unix
为什么我的程序源文件里不能包含内核头文件?
来源: 互联网 发布时间:2016-01-18
本文导语: 编写了一个内核程序,想先生成.o文件,然后再连接到其他文件生成.ko文件。 下面一层(这一层可以包含内核头文件)把linux内核中提供的函数做了封装,这一层只是对下面一层调用,现在想改一下,让本层直接用内核...
编写了一个内核程序,想先生成.o文件,然后再连接到其他文件生成.ko文件。
下面一层(这一层可以包含内核头文件)把linux内核中提供的函数做了封装,这一层只是对下面一层调用,现在想改一下,让本层直接用内核提供的函数,但一在源文件里加上包含内核头文件的语句(像#include),就提示找不到sched.h这个文件。估计是Makefile的问题,请大家帮忙看一下:
Makefile
---------------------------------------------------------------------------
#source file
SUBDIRS :=
SUBDIRS := abc
SUBDIRS := abcd
SUBDIRS := abcde
AD_SRC := $(foreach subdir, $(SUBDIRS), $(wildcard $(subdir)/*.c))
#obj files
AD_OBJ := $(AD_SRC:.c=.o)
#dependecy files
AD_DEP := $(AD_SRC:.c=.d)
#final target
LIB_DIRS = $(CURDIR)/../lib
LIB_NAME = ad.o
#rules to make the objs
CC = gcc
LD = ld
MV = mv
CFLAGS :=
CFLAGS := -I $(CURDIR)/h
CFLAGS := -I $(CURDIR)/../h
CFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os -fomit-frame-pointer -g -Wdeclaration-after-statement -pipe -msoft-float -m32 -fno-builtin-sprintf -fno-builtin-log2 -fno-builtin-puts -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=i686 -mregparm=3
LDFLAGS :=
LDFLAGS += -r
%.o : %.c
@$(CC) -M -MT $*.o -c $(CFLAGS) $
下面一层(这一层可以包含内核头文件)把linux内核中提供的函数做了封装,这一层只是对下面一层调用,现在想改一下,让本层直接用内核提供的函数,但一在源文件里加上包含内核头文件的语句(像#include),就提示找不到sched.h这个文件。估计是Makefile的问题,请大家帮忙看一下:
Makefile
---------------------------------------------------------------------------
#source file
SUBDIRS :=
SUBDIRS := abc
SUBDIRS := abcd
SUBDIRS := abcde
AD_SRC := $(foreach subdir, $(SUBDIRS), $(wildcard $(subdir)/*.c))
#obj files
AD_OBJ := $(AD_SRC:.c=.o)
#dependecy files
AD_DEP := $(AD_SRC:.c=.d)
#final target
LIB_DIRS = $(CURDIR)/../lib
LIB_NAME = ad.o
#rules to make the objs
CC = gcc
LD = ld
MV = mv
CFLAGS :=
CFLAGS := -I $(CURDIR)/h
CFLAGS := -I $(CURDIR)/../h
CFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os -fomit-frame-pointer -g -Wdeclaration-after-statement -pipe -msoft-float -m32 -fno-builtin-sprintf -fno-builtin-log2 -fno-builtin-puts -mpreferred-stack-boundary=2 -fno-unit-at-a-time -march=i686 -mregparm=3
LDFLAGS :=
LDFLAGS += -r
%.o : %.c
@$(CC) -M -MT $*.o -c $(CFLAGS) $