场景说明:在编译网卡驱动的过程中,linux系统需要安装gcc和kernel-devel开发软件包。gcc不谈,但是kernel-devel安装的过程,简单的说明:
# yum search kernel-devel
#yum -y isntall kernel-devel
安装完毕之后,在/usr/src/kernels/2.6.32-431.23.3.el6.x86_64目录下,存放内核源代码的头文件,
此时内核的版本是2.6.32-431.23.3.el6.x86_64。
按道理安装完毕之后会在/lib/modules/2.6.32-431.23.3.el6.x86_64目录下会创建一个软连接build,
软连接会指向内核头文件源代码:/usr/src/kernels/2.6.32-431.23.3.el6.x86_64。发现两者之间的uname -r必须是一致的。幸运的话,这个时候就可以编译网卡驱动了,但是》》》》
***************************************************
但是安装的内核源代码的头文件目录是2.6.32-431.29.2.el6.x86_64,明显不一致啊 !无法生成软连接,难道就此放弃。既然自动不行,我们手动创建软连接:
ln -s /usr/src/kernels/2.6.32-431.29.2.el6.x86_64/ /lib/modules/2.6.32-431.el6.x86_64/build/
错误提示:ln: target `/lib/modules/2.6.32-431.el6.x86_64/build/' is not a directory: No such file or directory
看来是build后面不带/,表示软连接。
ln -s /usr/src/kernels/2.6.32-431.29.2.el6.x86_64/ /lib/modules/2.6.32-431.el6.x86_64/build
这个时候编译网卡驱动就没有任何问题了。
场景说明:在编译r8168型号网卡驱动的时候,错误提示如下:
找不到/lib/modules/'uname -r'/build and Stop
编译网卡驱动r8168.ko,需要用到/lib/modules/'uname -r'/build这个文件夹
build这个文件夹,实际上是个软链接:
build -> ../../../usr/src/kernels/2.6.3(你的系统版本号),
如果安装的时候提示“no such file or directory”,说明usr/src/kernels/2.6.3这个文件夹没有创建。
而安装内核头文件kernel-devel之后,它就会出现。执行:
yum install kernel-devel
内核模块r8168.ko的编译也会顺利进行