最近用了下树莓派和inter Edison,本来打算使用一下网卡,可是发现树莓派和Edison竟然都编译不了官方的驱动,报错缺少 /kenerl/bulid 目录,查了下资料,原来是这些嵌入式平台都为了节省空间,都没有搭载源码,而在网卡的驱动程序中有需要调用系统的接口,但是没有源码,这些接口也就没有了,编译的时候就找不到接口,so,报错了。
一编译驱动
解决办法有两个:
第一 安装source-devel
source-devel也就是源码库,你所用的内核的接口该有的它都有。
1、
首先,查看内核: uname -r
2、 内
核头文件C header files下载地址:点击打开链接
3、
内核安装完毕后,需要用这个命令确定内核 C header 的安装目录
ls -d /usr/src/kernels/$(uname -r)*/include
引用:
[root@localhost ~]# uname -r
2.6.25-14.fc9.i686
[root@localhost ~]# rpm -q kernel-devel
package kernel-devel is not installed
[root@localhost ~]# cd /home
[root@localhost home]# wget ftp://rpmfind.net/linux/fedora/releases/9/Everything/i386/os/Packages/kernel-devel-2.6.25-14.fc9.i686.rpm
[root@localhost home]# rpm -i kernel-devel-2.6.25-14.fc9.i686.rpm
[root@localhost home]# rpm -q kernel-devel
kernel-devel-2.6.25-14.fc9.i686
4、装完了你就开始编译你的网卡驱动吧
第二 其他环境编译复制
这个方法要简单点,大概意思是你在其他环境(例如虚拟机)编译完成,然后将编译的固件和文件copy到平台里去。这个方法要求你知道驱动编译出来有哪些,还有那些编译出来的部分应该放到哪些地方去。
1、在其他环境编译驱动
2、找到驱动固件 /lib/modules/3.13.0-32-generic(内核版本)/kernel/drivers/net/wireless/rtl8188(网卡驱动固件), 将其复制到嵌入式平台对应的文件夹中
3、找到二进制文件 /lib/firmware/RTL8192SE(网卡芯片型号)/ 这个文件夹下是二进制文件(当你将驱动固件copy到驱动文件夹下后,平台或许会自动下载二进制文件,如果没有则复制进去)
注:关于复制文件你可以用winscp之类的ssh服务软件将其拷贝到个人目录,在用命令移动到目标文件夹
二 检查驱动
查一下驱动是不是加载了,如果有以下内容说明驱动安装成功了。
pi@raspberrypi:~$ lsmod | grep 81
8192cu 528365 0
uio 8119 1 uio_pdrv_genirq
没有的话重启再查看