<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://www.mywiki.cn/Hovercool/index.php?action=history&amp;feed=atom&amp;title=%E9%A9%B1%E5%8A%A8%E7%AC%AC%E4%B8%80%E5%8F%91%EF%BC%9Ahello_world%E6%A8%A1%E5%9D%97</id>
	<title>驱动第一发：hello world模块 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://www.mywiki.cn/Hovercool/index.php?action=history&amp;feed=atom&amp;title=%E9%A9%B1%E5%8A%A8%E7%AC%AC%E4%B8%80%E5%8F%91%EF%BC%9Ahello_world%E6%A8%A1%E5%9D%97"/>
	<link rel="alternate" type="text/html" href="https://www.mywiki.cn/Hovercool/index.php?title=%E9%A9%B1%E5%8A%A8%E7%AC%AC%E4%B8%80%E5%8F%91%EF%BC%9Ahello_world%E6%A8%A1%E5%9D%97&amp;action=history"/>
	<updated>2026-09-01T06:14:55Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.mywiki.cn/Hovercool/index.php?title=%E9%A9%B1%E5%8A%A8%E7%AC%AC%E4%B8%80%E5%8F%91%EF%BC%9Ahello_world%E6%A8%A1%E5%9D%97&amp;diff=782&amp;oldid=prev</id>
		<title>2015年5月6日 (三) 08:11 Hovercool</title>
		<link rel="alternate" type="text/html" href="https://www.mywiki.cn/Hovercool/index.php?title=%E9%A9%B1%E5%8A%A8%E7%AC%AC%E4%B8%80%E5%8F%91%EF%BC%9Ahello_world%E6%A8%A1%E5%9D%97&amp;diff=782&amp;oldid=prev"/>
		<updated>2015-05-06T08:11:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;在编写代码之前，先要建立内核树，这里暂不予以讨论。&lt;br /&gt;
&lt;br /&gt;
编译一个模块一般至少包括两个部分：&lt;br /&gt;
&lt;br /&gt;
*c源文件&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
 //------------hello.c----------------------&lt;br /&gt;
 #include &amp;lt;linux/init.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;linux/module.h&amp;gt;&lt;br /&gt;
 MODULE_LICENSE(&amp;quot;Dual BSD/GPL&amp;quot;);&lt;br /&gt;
 static int hello_init(void)&lt;br /&gt;
 {&lt;br /&gt;
     printk(KERN_ALERT &amp;quot;Hello world\n&amp;quot;);&lt;br /&gt;
     return 0;&lt;br /&gt;
 }&lt;br /&gt;
 static void hello_exit(void)&lt;br /&gt;
 {&lt;br /&gt;
     printk(KERN_ALERT &amp;quot;Goodbye, cruel world\n&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 module_init(hello_init);&lt;br /&gt;
 module_exit(hello_exit);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Makefile&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
 //------------Makefile----------------------&lt;br /&gt;
 obj-m := hello.o&lt;br /&gt;
 KERNELDIR := /lib/modules/$(shell uname -r)/build&lt;br /&gt;
 PWD := $(shell pwd)&lt;br /&gt;
 modules:&lt;br /&gt;
     $(MAKE) -C $(KERNELDIR) M=$(PWD) modules #注意前面必须为tab&lt;br /&gt;
 modules_install:&lt;br /&gt;
     $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install #注意前面必须为tab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
最后以root身份：&lt;br /&gt;
&lt;br /&gt;
 $:make&lt;br /&gt;
&lt;br /&gt;
然后加载模块：&lt;br /&gt;
&lt;br /&gt;
 $:insmod ./hello.ko&lt;br /&gt;
&lt;br /&gt;
卸载模块：&lt;br /&gt;
&lt;br /&gt;
 $:rmmod hello&lt;br /&gt;
&lt;br /&gt;
查看 /var/log/syslog验证模块加载信息：&lt;br /&gt;
&lt;br /&gt;
 Feb 10 15:31:18 tgdn-1828 kernel: [  190.982429] Hello world&lt;br /&gt;
 Feb 10 15:31:28 tgdn-1828 kernel: [  200.771173] Goodbye, cruel world&lt;br /&gt;
&lt;br /&gt;
或直接通过命令查看打印消息：&lt;br /&gt;
&lt;br /&gt;
 $:dmesg&lt;/div&gt;</summary>
		<author><name>Hovercool</name></author>
	</entry>
</feed>