psyduck.mans 发表于 2013-5-28 23:37:33

CubieBoard 安装 Fedora 的 8188eu 驱动 编译血泪史

之前提问帖子是http://forum.cubietech.com/forum.php?mod=viewthread&tid=511,超版想看错误信息,于是我又另起新帖,希望能在这个帖子中解决这个问题,至少能救了一大堆想在Fedora安装淘宝官方提供的牛逼水星wifi驱动

血泪史如下:
首先通过该牛人弄得https://fedoraproject.org/wiki/Architectures/ARM/AllwinerA10把fedora装到TF卡中然后正常运行没任何问题
#uname -a
#Linux localhost.localdomain 3.4.29.sun4i #21 Sat Feb 16 18:18:25 CET 2013 armv7l armv7l armv7l GNU/Linux

于是从https://github.com/mmplayer/linux-sunxi中下载了sunxi-3.4的源码传到板子上的fedora中:
#/home/psyduck/linux-sunxi-sunxi-3.4.zip
解压(如果不把两个标准输出信息扔到/dev/null中,TTL线用SecureCRT连接然后直接unzip竟然能让我的win8崩溃重启!已经不下快10次了!!!)
#unzip linux-sunxi-sunxi-3.4.zip > /dev/null 2>&1 &
解压后路径为
#/home/psyduck/linux-sunxi-sunxi-3.4
#cd /home/psyduck/linux-sunxi-sunxi-3.4
以下参考该帖
#make mrproper
#make sun4i_defconfig
#make prepare
#make modules_prepare
#cd drivers/net/wireless/rtl8188eu/
#CONFIG_RTL8188EU=m make -C /home/psyduck/linux-sunxi-sunxi-3.4 M=`pwd`
最后报错
#...........usb_intf.c:1140:29: fatal error: mach/sys_config.h: No such file or directory compilation terminated
将usb_intf.c中的mach改为plat重新编译,不出意外的话应该生成8188eu.ko驱动
但是depmod -a && modprobe 8188eu报错:
#[ 4202.590000] 8188eu: version magic '3.4.29 preempt mod_unload modversions ARMv7 p2v8 ' should be '3.4.29.sun4i mod_unload ARMv7 p2v8 'ERROR: could not insert '8188eu': Exec format error

#modinfo 8188eu.ko
filename:       /home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/8188eu.ko
version:      v4.1.2_4787.20120803
author:         Realtek Semiconductor Corp.
description:    Realtek Wireless Lan Driver
license:      GPL
srcversion:   43413332785027284FC989C
alias:          usb:v0BDAp8179d*dc*dsc*dp*ic*isc*ip*
depends:      
vermagic:       3.4.29 preempt mod_unload modversions ARMv7 p2v8
parm:         rtw_ips_mode:The default IPS mode (int)
parm:         ifname:charp
parm:         rtw_initmac:charp
parm:         rtw_channel_plan:int
parm:         rtw_chip_version:int
parm:         rtw_rfintfs:int
parm:         rtw_lbkmode:int
parm:         rtw_network_mode:int
parm:         rtw_channel:int
parm:         rtw_mp_mode:int
parm:         rtw_wmm_enable:int
parm:         rtw_vrtl_carrier_sense:int
parm:         rtw_vcs_type:int
parm:         rtw_busy_thresh:int
parm:         rtw_ht_enable:int
parm:         rtw_cbw40_enable:int
parm:         rtw_ampdu_enable:int
parm:         rtw_rx_stbc:int
parm:         rtw_ampdu_amsdu:int
parm:         rtw_lowrate_two_xmit:int
parm:         rtw_rf_config:int
parm:         rtw_power_mgnt:int
parm:         rtw_smart_ps:int
parm:         rtw_low_power:int
parm:         rtw_wifi_spec:int
parm:         rtw_antdiv_cfg:int
parm:         rtw_antdiv_type:int
parm:         rtw_enusbss:int
parm:         rtw_hwpdn_mode:int
parm:         rtw_hwpwrp_detect:int
parm:         rtw_hw_wps_pbc:int
parm:         rtw_max_roaming_times:The max roaming times to try (uint)
parm:         rtw_mc2u_disable:int

于是想到用fedora自己当前的kernel源码进行如上编译应该可以
#make clean
#yum install kernel-develop
#CONFIG_RTL8188EU=m make -C /usr/src/kernels/3.9.3-201.fc18.armv7hl M=`pwd`
报错:
make: Entering directory `/usr/src/kernels/3.9.3-201.fc18.armv7hl'
LD      /home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/built-in.o
CC /home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/core/rtw_cmd.o
In file included from /home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/core/rtw_cmd.c:23:0:
/home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/include/osdep_service.h: In function ‘thread_enter’:
/home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu/include/osdep_service.h:1397:2: error: implicit declaration of function ‘daemonize’ [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
make: *** Error 1
make: *** Error 2
make: Leaving directory `/usr/src/kernels/3.9.3-201.fc18.armv7hl'
将sunxi4i的rtl8188eu驱动源码拷入系统kernel源码中再试
#cp -r /home/psyduck/linux-sunxi-sunxi-3.4/drivers/net/wireless/rtl8188eu /usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/
#cd /usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu
#CONFIG_RTL8188EU=m make -C /usr/src/kernels/3.9.3-201.fc18.armv7hl M=`pwd`
报了一样的错:
make: Entering directory `/usr/src/kernels/3.9.3-201.fc18.armv7hl'
LD      /usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu/built-in.o
CC /usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu/core/rtw_cmd.o
In file included from /usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu/core/rtw_cmd.c:23:0:
/usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu/include/osdep_service.h: In function ‘thread_enter’:
/usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/net/wireless/rtl8188eu/include/osdep_service.h:1397:2: error: implicit declaration of function ‘daemonize’ [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
make: *** Error 1
make: *** Error 2
make: Leaving directory `/usr/src/kernels/3.9.3-201.fc18.armv7hl'

重新初始一下内核:
#cd /usr/src/kernels/3.9.3-201.fc18.armv7hl
#make mrproper
报错:
scripts/Makefile.clean:17: /usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/infiniband/hw/amso1100/Makefile: No such file or directory
make: *** No rule to make target `/usr/src/kernels/3.9.3-201.fc18.armv7hl/drivers/infiniband/hw/amso1100/Makefile'.Stop.
make: *** Error 2
make: *** Error 2
make: *** Error 2

各种尝试以失败告终,希望有牛人给个解决方案

swn1012 发表于 2013-5-29 12:42:19

先把内核完整编译一遍,无误后再编译驱动试试。

psyduck.mans 发表于 2013-5-29 13:19:10

swn1012 发表于 2013-5-29 12:42 static/image/common/back.gif
先把内核完整编译一遍,无误后再编译驱动试试。

恩 的确
不过sunxi-3.4我真试了 一样的错误
而fedora用yum install kernel-devel的内核根本没法编译,上面也提到了

udoo 发表于 2013-5-29 18:40:16

sunxi 3.4是3.4的kernel,你下的fedora的kernel是3.9的,应该编不过去。
在第一步得到8188eu.ko后,modprobe出错后,用dmesg看一下出错信息,贴出来。
也可以用modprobe -f 8188eu.ko试一下,可能还是kernel的版本信息不一致导致的。

正常的编译过程是要先编译内核,得到Module.symvers文件,再编译驱动,以使版本信息一致,模块才可以装入。



siriux 发表于 2013-5-29 20:18:21

添加编译项需要修改当前目录以及上一层目录下的Makefile,kconfig。
还有交叉编译环境有没有问题。

psyduck.mans 发表于 2013-5-29 21:47:18

siriux 发表于 2013-5-29 20:18 static/image/common/back.gif
添加编译项需要修改当前目录以及上一层目录下的Makefile,kconfig。
还有交叉编译环境有没有问题。 ...

怎么改 求教~
我上面的操作都是在板子上用ttl线直接ssh操作的,应该不用什么交叉吧

cubieplayer 发表于 2013-5-29 21:57:31

求中奖

psyduck.mans 发表于 2013-5-29 23:07:56

udoo 发表于 2013-5-29 18:40 static/image/common/back.gif
sunxi 3.4是3.4的kernel,你下的fedora的kernel是3.9的,应该编不过去。
在第一步得到8188eu.ko后,modprob ...

关键yum安装的3.9的竟然没法编译,回头我看看sunxi的有没有3.9的

linvorid 发表于 2013-5-29 23:40:55

daemonize在高版本内核中被去掉了,你可以用lxr看看。

hermitbin 发表于 2014-5-8 12:45:14

标记下,以后需要
页: [1] 2
查看完整版本: CubieBoard 安装 Fedora 的 8188eu 驱动 编译血泪史