ubuntu内核编程环境搭建

1,gcc

2,make

3,linux-source

从这个包的名称上已经知道了,这是内核源码包。你可以apt-cache search kernel-source搜索到内核源代码包,并用uname -r命令查看到当前系统内核版本,然后用apt-get install kernel-source-xxxx来安装和你内核版本一致的内核源代码包。

但我并不建议你这样做,因为大多数发行版的Linux的内核源代码包并不是和你从 kernel.org上下载来的完全一致,应该是经过发行者们修改优化过的包,虽然发行版的制作者们花了心血在上面,但对我们编程者来说这并不是件好事, 因为大多发行版的源代码包缺少某些必要的头文件和某些有用的脚本程序,这会导致我们在编写内核模块时遇到麻烦,比如编译时可能会报错说某个头文件找不到, 又可能报错说某个脚本程序不存在啦。

如果你直接去kernel.org上下载一个新的内核来编译升级你的内核,并在此基础上进行内核编程可能会省事一些,至少我后面讲到的这些包你都可以不用安装了,把KERNEL_DIR变量设置为你内核源代码包的位置就够了。

在这里还是以Debian 3.1、内核2.6.8-2-386为基础来教大家准备内核编程环境吧。那么你依次用这几个命令来安装kernel-source包吧。

sudo apt-cache search linux-source

选择最新的版本安装

sudo apt-get install linux-source-xxxxxx

注:如果你不想重新编译内核,内核源代码包kernel-source是完全可以不下载来的。

4,linux-headers

这是内核源代码头文件包,不管你是要进行内核模块开发还是进行驱动程序开发,这个包都是必须 要安装的。因为作为一个内核模块编写者,通常会调用内核里的一些东西,比如内核头文件,内核数据结构申明等。它里面包含了一些关键的内核头文件。

sudo apt-cache search linux-headers

选择最新的版本安装

sudo apt-get install linux-headers-xxxxxx

注:在Ubuntu下,好象这个包的前面都加上了linux-,从而变成了linux-kernel-headers。

如果之前没有安装过kernel-kbuild包,安装此包的过程中会安装kernel-kbuild包,这个包在下面介绍。

5,linux-kbuild(未找到)

这个包是用来编译内核模块的,下载安装这个包后会发现在/usr/src目录下多了一个kernel-kbuild-xxxx开头的目录,下面只有scripts一个目录,显然这是用来编译内核模块的一些脚本程序。安装方法一样:

sudo apt-cache search linux-kbuild

选择最新的版本安装

sudo apt-get install linux-kbuild-xxxxxx

注:你也会发现,在上面安装kernel-headers包后,/usr/src/kernel-headers-xxxx目录下有个scripts目录,其实是到/usr/src/kernel-kbuild-xxxx目录下的scripts的一个链接。

这个包没有找到,但是找到了script已经在 4安装了。

6,build-essential

这个包包含一个在建立deb包过程中起关键作用的包的信息列表,如果你不想建立deb包你就不需要安装此表,如果需要生成deb包就最好安装一下这个包吧。安装方法:

sudo apt-get install build-essential

7,kernel-package

如果你想把内核镜像做成一个deb包来用,那么必须用安装这个包了。也就是说只有安装了这个软件包你才能有make-kpkg命令可用。安装方法一样了:

sudo apt-get install kernel-package

8,initramfs-tools

如果你想制作启动过程的initrd镜像,则这个包是必不可少的。安装了这个包之后才有mkinitrd命令可用的。安装方法:

sudo apt-get install initramfs-tools

貌似是zhege,命令是initramfs

-----------------------------------------------------------------------------------

根据《linux设备驱动程序》内提供的makefile实例运行。

不许要设置变量。

如果报找不到Makefile命令,是可能路径不对或者文件名大小写不匹配

你可能感兴趣的:(编程,Debian,ubuntu,search,makefile,Deb)