如果你到静态库不需要使用任何内核数据结构或者函数那么你可以参考
如何将内核静态库编译连接到驱动程序中去
如果你需要在静态库里面使用一些内核数据结构,如简单的添加一个 #include ,你会发现编译器输出一堆错误!
最常见的是 找不到之类,那么你可以参考我的静态库makefile
RM = rm -f
CCFLAGS = -c -O2 -D__KERNEL__
ARFLAG = -rc
CC = gcc -fno-common -v
AR = ar
lib_OBJECTS = xxxx.o
lib_SOURCE = xxxx.c
KDIR := /lib/modules/$(shell uname -r)/build/include
X86_ASMDIR := /lib/modules/$(shell uname -r)/build/arch/x86/include
CONFIG_FILE := /lib/modules/$(shell uname -r)/build/include/generated/autoconf.h
LIB = xxxx.a
xxxx.a:$(lib_OBJECTS)
$(AR) $(ARFLAG) -o $@ $^
$(lib_OBJECTS):$(lib_SOURCE)
#$(CC) $(CCFLAGS) -o $@ $^
$(CC) $(CCFLAGS) -I$(KDIR) -I$(X86_ASMDIR) -include $(CONFIG_FILE) -o $@ $^
clean:
$(RM) $(lib_OBJECTS.o)
$(RM) $(LIB)
注意makefile中的粗体行,解决了系统找不到包含文件问题,另外指明了编译内核模块的默认配置autoconf.h