设备驱动编译

     在使用linux系统的过程中,难免不了会要编译相关设备的驱动;对于初学者来说,这是件比较麻烦的事情。今天就遇到了编译网卡驱动的问题。由于公司的产品是多网卡设备,系统自带的网卡驱动能够驱动网卡设备,但是drop数据包比较严重,从现象上看,是由于网卡驱动不符合造成的。

    首先,要清楚,设备驱动程序是基于Linux内核源码编写的,所以,在编译设备驱动程序前,一定要清楚当前使用的Linux系统中是否有源码包,是否编译好了。目前,大多数kernel包都做成了rpm包,常常不会包含有src源码。但是还是有带源码的rpm包,用google搜索后,都会找到。

在这里给个FC系统的rpm下载点:http: //download.fedora.redhat.com

    不过,你还是检查一下自己的系统中kernel的rpm包。

查看:

[root@kindgeorge root]# rpm -qa|grep kernel

kernel-2.4.18-3

kernel-source-2.4.18-3  (说明有源码了)

[root@kindgeorge root]# rpm -qa|grep gcc (gcc是编译用)

gcc-2.96-110

gcc-g77-2.96-110

gcc-c++-2.96-110

 

 一般装了内核源包的话,都会在出现/usr/src/linux-2.4,同路径下会有linux-2.4.18-3的文件实际目录.

    如果没有源码包,那就下载后,在编译。

 

 编译内核源码:
# rpm –ivh kernel-2.6.15-1.2054_FC5.src.rpm
# cd /usr/src/redhat/SPECS
# rpmbuild -bp --target =$(uname -m) kernel-2.6.spec
# ls /usr/src/redhat/BUILD/kernel-2.6.15/
Config.mk linux-2.6.15.i686 vanilla xen xen-vanilla (
有可能是i586我的是i686)
# cd /usr/src
# mkdir kernels (
默认的安装是没有kernels这个文件夹)
# cd kernels/
# ln -s ../redhat/BUILD/kernel-2.6.15/linux-2.6.15.i686/ 2.6.15-1.2054_FC5-i686
# cd 2.6.15-1.2054_FC5-i686/
# cp configs/kernel-2.6.15-i686.config .config
cp
:是否覆盖“.config”? y 修正Makefile
#uname –r
(得到2.6.15-1.2054_FC5
2.6.15-1.2054_FC5
那么就要将Makefile中的
EXTRAVERSION = -prep
换成
EXTRAVERSION = -1.2054_FC5
继续编译:
#make mrproper
#make oldconfig
#make
(比较耗时,我用了一个多小时)
#make modules_install

到这里,内核源码包就编译好了。

剩下的就是转到相应的驱动目录下,按目录中的提示文件来编译驱动程序了。

 

要是没有相关的源码包的话,会出现出现错误: /lib/modules/2.6.15-1.2054_FC5/build文件不存在

要注意,/lib/modules/2.6.15-1.2054_FC5/build文件是一个连接文件,所以要注意到其连接的有效性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值