一、一般src.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则主要是头文件。