Linux(fedora 10)Hello World模块
  B2JnUQ2gB4jN 2023年11月02日 41 0


 

一个内核模块的例子:

 

#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("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);


Makefile文件


 

ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KERNELDIR ?= /usr/src/kernels/$(shell uname -r)
PWD := $(shell pwd)
INSTALLDIR = /opt/rootfs/lib/modules
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
cp hello.ko $(INSTALLDIR)
clean:
rm -rf *.o *~core .depend .*.cmd *.ko *.mod.c .tmp_versions
.PHONY:modules modules_install clean
endif

 

在shell下

 


[root@localhost hello_driver]# 
make




make -C /usr/src/kernels/2.6.27.5-117.fc10.i686 M=/opt/hello_driver modules




make[1]: Entering directory `/usr/src/kernels/2.6.27.5-117.fc10.i686'




CC [M] /opt/hello_driver/hello.o




Building modules, stage 2.




MODPOST 1 modules




CC /opt/hello_driver/hello.mod.o




LD [M] /opt/hello_driver/hello.ko




make[1]: Leaving directory `/usr/src/kernels/2.6.27.5-117.fc10.i686'




[root@localhost hello_driver]#
ls




hello.c hello.mod.c hello.o Makefile~ modules.order




hello.ko hello.mod.o Makefile Module.markers Module.symvers




[root@localhost hello_driver]#
insmod hello.ko




[root@localhost hello_driver]#
lsmod | grep hello




hello 5248 0




[root@localhost hello_driver]#
rmmod hello




[root@localhost hello_driver]#
tail -n 2 /var/log/messages




Jun 23 19:33:39 localhost kernel: hello,world!




Jun 23 19:33:55 localhost kernel: Goodbye,cruel world!




[root@localhost hello_driver]#
dmesg | tail
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  HE3leaVn7jMN   2023年11月24日   29   0   0 Timei++#include
  HE3leaVn7jMN   2023年11月26日   29   0   0 i++#include
B2JnUQ2gB4jN