|
轉(zhuǎn)載請注明出處:http://blog.csdn.net/zhangyang0402/archive/2010/07/04/5711502.aspx
一、hello.c
[cpp] view plaincopy
二、Makefile
[cpp] view plaincopy
Makefile解釋 obj-m :=hello.o 表示要生成hello模塊即hello.ko。若hello.o有兩個(gè).c源文件(file1.c, file2.c)生成,則須添加hello-objs :=file1.o file2.o….. KERNELDIR和PWD是兩個(gè)變量名,表示內(nèi)核源碼目錄和當(dāng)前目錄 make -C ${KERNELDIR} M=${PWD} modules -C指定內(nèi)核源碼目錄,M指定模塊源碼目錄 注意:make和rm命令前是TAB字符,其余行都是頂格寫
三、編譯 $ make make -C /lib/modules/`uname -r`/build M=/home/test/test modules make[1]: Entering directory `/usr/src/linux-2.6.34' CC [M] /home/test/test/hello.o Building modules, stage 2. MODPOST 1 modules CC /home/test/test/hello.mod.o LD [M] /home/test/test/hello.ko make[1]: Leaving directory `/usr/src/linux-2.6.34'
$ ls hello.c hello.mod.c hello.o modules.order hello.ko hello.mod.o Makefile Module.symvers
四、加載 將hello模塊加載到內(nèi)核 $ su Password: # insmod hello.ko
若是在終端下,可直接看到輸出信息 若是在偽終端下,可通過dmesg -c或tail /var/log/messages查看 $ dmesg -c Hello, World! This is init.
查看加載的模塊中是否有hello模塊 $ lsmod |grep hello hello 588 0
五、卸載 將hello模塊從內(nèi)核中卸載 $ su Password: # rmmod hello $ dmesg -c Hello, World! This is exit.
六、參考
LDD3 |
|
|