安装.src.rpm软件包和安装centos内核源代码


摘要:在进行内核开发或者调试的时候,经常需要编译驱动,或者重新编译发行版内核或者内核中的某个软件。那么,我们应该从哪里取得发行版的内核源文件又该如何安装这些内核源文件呢?本文主要讲解了centos内核源文件的安装,附带讲解了一般src.rpm包的安装。

一、一般src.rpm包的安装

一般有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法:

方法一: 
1. 执行rpm -i your-package.src.rpm 
2. cd /usr/src/redhat/SPECS 
3. rpmbuild -bp your-package.specs 一个和你的软件包同名的specs文件(bp的意思是执行spces文件之前的部分,通常情况下,这部分工作是执行%prep阶段的内容) 
4. cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录(工作目录) 
5. ./configure 这一步和编译普通的源码软件一样,可以加上参数 
6. make 
7. make install

方法二: 
1. 执行rpm -i>参看centos下软件包的制作)
2. cd /usr/src/redhat/SPECS (前两步和方法一相同) 
3. rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件(bb的意思是根据specs文件的配置,构建一个二进制包)

这时,在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等) 在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。执行:

rpm -i new-package.rpm即可安装完成。


二、内核源文件.src.rpm包的安装


1)有时候,我们需要获得内核源文件(不是原生态的内核源文件而是发行版的内核源文件)。首先,我们需要到发行版的软件源去下载对应内核的软件包:

kernel-2.6.32-279.el6.src.rpm


2)接着,运行命令rpm -ivh kernel-2.6.32-279.el6.src.rpm。此时,对应的内核源文件并没有展开到相应的目录下面,而是将这个rpm包展开到/root/rpmbuild/SOURCE目录下面。


3)解压/root/rpmbuild/SOURCE对应目录下面的linux-2.6.32-279.el6.tar.bz2,即可得到内核头文件


三、获得linux不同发行版的内核源码

1)从对应的安装光盘获取:/cdrom/Pakages/ kernel-devel-2.6.xx-xx.rpm

2)从相应发行版的站点获取:http://vault.centos.org/6.4/updates/Source/SPackages/


四、几种具体的需求:


1)如果你需要编译一个内核的驱动程序模块,很大机会你并不是真的需要完整的内核源代码。你可能只需要kernel-devel组件。(然而,假若你肯定须要完整的源代码目录树,请遁从第二部份的指示。)通常情况下,这个kernel-devel只是包含相应的头文件和makefile文件。


2)获得完整版的linux发行版内核源文件

http://vault.centos.org/6.4/updates/Source/SPackages/

可以直接进行下载,然后按照第二部分的介绍进行安装。具体,可以参考这里,把它们制作成一般的rpm包,然后安装:http://wiki.centos.org/zh/HowTos/I_need_the_Kernel_Source


五、说明:

kernel devel与kernel source的区别


        区别:kernel-devel包只包含用于内核开发环境所需的内核头文件以及Makefile,而kernel-souce包含所有内核源代码。
如果仅仅是用于你自己编写的模块开发的话,因为只需引用相应的内核头文件,所以只有devel包即可,如果你要修改现有的内核源代码并重新编译,那必须是kernel-souce。

        kernel-souce在RH某些版本之后不再附带在发行版中了,必须自己通过kernel-XXX.src.rpm做出来。

        kernel-devel是用做内核一般开发的,比如编写内核模块,原则上,可以不需要内核的原代码。kernel则是专指内核本身的开发,因此需要内核的原代码。 

       关于kernel source的有kernel和kernel-devel两个rpm,其中kernel rpm包含源文件和头文件(就像2.4下的kernel-source rpm),而kernel-devel则主要是头文件。


你可能感兴趣的:(发行版,内核源码,src.rpm,发行版内内核源代码)