ch02 hello

来源:互联网 发布:战争雷霆淘宝代码 编辑:程序博客网 时间:2024/06/07 17:52
编译:
首先拷贝hello.c到一个单独的目录,编写Makefile.
如下:
[root@Tsui-Fedora learn]# pwd
/home/Tsui/learn
[root@Tsui-Fedora learn]# cp ldd3/examples/misc-modules/hello.c ldd3/tmp/
[root@Tsui-Fedora learn]# cd ldd3/tmp/
[root@Tsui-Fedora tmp]# ls
hello.c  Makefile
[root@Tsui-Fedora tmp]# vi Makefile
Makefile 中内容如下:
obj-m   := hello.o
编译:
[root@Tsui-Fedora tmp]# make -C /lib/modules/2.6.33.3-85.fc13.i686.PAE/build/ M=/home/Tsui/learn/ldd3/tmp
make: Entering directory `/usr/src/kernels/2.6.33.3-85.fc13.i686.PAE'
  LD      /home/Tsui/learn/ldd3/tmp/built-in.o
  CC [M]  /home/Tsui/learn/ldd3/tmp/hello.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/Tsui/learn/ldd3/tmp/hello.mod.o
  LD [M]  /home/Tsui/learn/ldd3/tmp/hello.ko
make: Leaving directory `/usr/src/kernels/2.6.33.3-85.fc13.i686.PAE'
[root@Tsui-Fedora tmp]# ls
built-in.o  hello.ko     hello.mod.o  Makefile       Module.symvers
hello.c     hello.mod.c  hello.o      modules.order
hello.ko就是我们编译出来的模块,用insmod可以加载到内核去,rmmod可以卸载模块,lsmod可以查看模块有没有加载上。
[root@Tsui-Fedora tmp]# insmod hello.ko
[root@Tsui-Fedora tmp]# lsmod | grep hello
hello                    628  0
[root@Tsui-Fedora tmp]# dmesg
dmesg会打印出很多信息,在最后面可以看到hello.c里面printk输出的信息。






原创粉丝点击