当前位置:文档之家› 编译在arm板上运行的内核模块

编译在arm板上运行的内核模块

编译在arm板上运行的内核模块
前两天被这个事情搞晕了,看视频的时候感觉编译一个内核模块很简单的,
就是修改makefile 的两个地方,但是自己一做就出现问题了,因为我是自己自
学的,身边没有可以指导的人,所以很多都要靠自己摸索了,我自己编译的时
候出现很多警告信息和错误,提示找不到头文件,还有一些看不懂的信息,到
处找资料,但是都没有说清楚,看了很久也没看出什么对自己有用的东西,看
的头晕,准备放弃了,今天在学习的时候又去看结果看到一篇博文,才焕然大
悟,makefile 里面要改的源代码路径是移植到arm 板上的linux 源代码,才突然
想起来,我自己改错了,就是要把路径指上你开发板上运行的linux 内核源代
码的顶层路径,我是用的通过nfs 启动系统的,是按照国嵌的视频一步步做的,
所以我的路径在我的nfs 所在的路径。

这些问题对于一些学了很久的人来说可
能很低级,但是对于初学者来说可能碰到后半天搞不好,所以写下来供参考。

下面是我自己找的一个小实验:
#include #include MODULE_LICENSE(“GPL”);MODULE_AUTHOR(“David Xie”);MODULE_DESCRIPTION(“Hello World Module”);MODULE_ALIAS(“a simplest module”);static int __init hello_init(){ printk(KERN_EMERG”Hello World!\n”);return 0;}static void __exit hello_exit(){ printk(KERN_EMERG “Goodbye Cruel World!\n”);}module_init(hello_init);module_exit(hello_exit);第一步是编译,首先要做的是设置交叉编译器,修改makefile,打开makefile 文件,
如下:ifneq ($(KERNELRELEASE),)obj-m := hello.oelseKDIR := /forlinux/kernel/linux-2.6.28all:make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-clean:rm -f *.ko *.o *.mod.o *.mod.c *.symversendif 首先需要指定kernel 的源代码路径:我的是KDIR。

相关主题