Linux 内核模块编程

时间:2021-06-26 15:46:41

环境搭建

我的环境 windows 7 + Vmware Player 6.0 + fedora 18(linux 3.6.10) + gcc 4.7.2

以上所需内容均可以在网上非常容易下载到,除了window 7其他都可以到官方网站下载

一、install gcc

yum install gcc

如遇一下错误

Transaction Check Error:
  file /usr/lib/audit from install of glibc-2.16-34.fc18.i686 conflicts with file from package audit-2.2.1-2.fc18.i686
则删除audit

yum remove audit


二、install kernel-devel包

执行make 如遇下面错误

[root@localhost modules_programming]# make -C /lib/modules/3.6.10-4.fc18.i686/build .

make: *** /lib/modules/3.6.10-4.fc18.i686/build: No such file or directory.  Stop.

安装 yum install kernel-devel-$(uname -r) 


三、到https://www.kernel.org/pub/linux/kernel/v3.x/去下载一份linux3.6.10的代码以便参考,由于内核源代码代码量特别大,文件特别多,所以可以去掉部分arch/下不关心的平台的代码,一般只保留x86的即可。代码产看工具推荐使用sourceinsight


注:

kernel devel和kernel source的区别:

kernel-devel包只包含用于内核开发环境所需的内核头文件以及Makefile

kernel-souce包含所有内核源代码
如果仅仅是用于你自己编写的模块开发的话,因为只需引用相应的内核头文件,所以只有devel包即可

如果你要修改现有的内核源代码并重新编译,那必须是kernel-souce
kernel-devel是用做内核一般开发的,比如编写内核模块,原则上,可以不需要内核的原代码
kernel则是专指内核本身的开发,因此需要内核的原代码