当前位置: 技术问答>linux和unix
Linux内核模块编译问题
来源: 互联网 发布时间:2017-02-23
本文导语: 小弟最近需要自编一个内核模块,然后加载输出hello world,一开始在编译的时候说找不到头文件init.h和module.h,然后编译时加上-I 导入到有此头文件的目录下,还是说找不到,再尝试使用-I 到其父目录下,就没...
小弟最近需要自编一个内核模块,然后加载输出hello world,一开始在编译的时候说找不到头文件init.h和module.h,然后编译时加上-I 导入到有此头文件的目录下,还是说找不到,再尝试使用-I 到其父目录下,就没有找不到头文件的问题了,但是会出现一大堆该目录下.h文件中的编译错误,其中既包含有module.h也包含其他一些我没有用到的头文件的错误,请教是什么原因?
C代码如下:
#include
#include
#include
static int hello_init(void) {
printk(KERN_WARNING "Module init: Hello world!n");
return 0;
}
static void hello_exit(void) {
printk(KERN_WARNING "Module exit: bye-byen");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile如下
C=gcc
MODCFLAGS :=-I /usr/src/Linux-3.0.0-generic/include -Wall -DMODULE -D__KERNEL__ -DLINUX
hello.o: hello.c
$(CC) $(MODCFLAGS) -c hello.c
小弟分不多了,希望各位大神多多赐教!!
另外:-I的路径记得不清了可能写法有点不对,但是使用的确实是有.h文件的那个路径
C代码如下:
#include
#include
#include
static int hello_init(void) {
printk(KERN_WARNING "Module init: Hello world!n");
return 0;
}
static void hello_exit(void) {
printk(KERN_WARNING "Module exit: bye-byen");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile如下
C=gcc
MODCFLAGS :=-I /usr/src/Linux-3.0.0-generic/include -Wall -DMODULE -D__KERNEL__ -DLINUX
hello.o: hello.c
$(CC) $(MODCFLAGS) -c hello.c
小弟分不多了,希望各位大神多多赐教!!
另外:-I的路径记得不清了可能写法有点不对,但是使用的确实是有.h文件的那个路径
|
没有构造内核源码树
构造内核源码树http://blog.csdn.net/youkuxiaobin/article/details/7307926
HelloWorld测试http://blog.csdn.net/youkuxiaobin/article/details/7308096
构造内核源码树http://blog.csdn.net/youkuxiaobin/article/details/7307926
HelloWorld测试http://blog.csdn.net/youkuxiaobin/article/details/7308096
|
Linux2.6 可以这样:
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KDIR := /lib/module/$(shell uname -r)/build //具体看内核(源码)路径
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
endif
|
make,make zImage一下你的那个内核应该就可以通过了
|
#include
#include
#include
include目录下有linux文件夹?
#include
#include
include目录下有linux文件夹?
|
请问用得是哪个版本的编译工具(gcc)?