编译内核模块Hello World V1.0

           写这个笔记主要是加深自己的印象,对于Makefile刚了解一点,现在突然冒出一个Makefile扩展,要理清楚一步步来正解了。

           准备我使用了Linux-3.7内核,并在使用x86的默认配置进行了编译,也编译了内核模块,并且制作的initrd,已经安装到现在用的RHEL6.3中了。这些都是前提。这个编译好的内核代码在/opt/kangear/kernel文件夹下。

           然后见到了一个Hello Word!级别的内核模块程序。代码如下:

#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
	printk(KERN_ALERT "Hello, world\n");
	return 0;
}
static void hello_exit(void)
{
	printk(KERN_ALERT "Goodbye, cruel world\n");
}

module_init(hello_init);
module_exit(hello_exit);

           这个笔记的重点如何一步步过度到LDD3上那个Makefile。对于已经在Linux内核代码中的模块,如果要编译成模块方式的话,很简单,在make menuconfig中将其选为 ,在make modules时就自动将它编译为模块。

           为了和上边说的变化不大,但是是又不改变现在内核中的东西。我的第一个版本的Makefile这样写的:     

obj-m := hello.o

           这样不理解的点就少了,主要弄清楚这个obj-m是什么意思了,这里边的m就相当于上边的那个 M,就代表Module的意思,还有obj-y呢。这个先深入到这。

           然后将这个两个文件放到kangear_modul目录下,将这个kangear_modul放到内核源代码目录下。

           编译时在/opt/kangear/kernel/linux-3.7下。用以下命令(也可以后边加上“Vi = 1”看详细过程)

           make M=./kangear_module/  modules

           然后就可以这就顺利编译了,我的过程如下:

           

           V1.0可以这样看Makefile之间的关系:

           


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁保康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值