编译在arm板上运行的内核模块
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译在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