无法在Ubuntu 13.10上编译RealTek RTL8188CE驱动程序

我想在我的机器上编译Realtek驱动程序,我收到以下错误:

make -C /lib/modules/3.11.0-12-generic/build M=/home/david/Downloads/rtl8188ce-linux-driver modules make[1]: Entering directory `/usr/src/linux-headers-3.11.0-12-generic' CC [M] /home/david/Downloads/rtl8188ce-linux-driver/base.o /home/david/Downloads/rtl8188ce-linux-driver/base.c: In function 'rtl_action_proc': /home/david/Downloads/rtl8188ce-linux-driver/base.c:885:32: error: 'struct ieee80211_conf' has no member named 'channel' rx_status.freq = hw->conf.channel->center_freq; ^ /home/david/Downloads/rtl8188ce-linux-driver/base.c:886:32: error: 'struct ieee80211_conf' has no member named 'channel' rx_status.band = hw->conf.channel->band; ^ /home/david/Downloads/rtl8188ce-linux-driver/base.c: In function 'rtl_send_smps_action': /home/david/Downloads/rtl8188ce-linux-driver/base.c:1451:24: error: 'struct ieee80211_conf' has no member named 'channel' info->band = hw->conf.channel->band; ^ make[2]: *** [/home/david/Downloads/rtl8188ce-linux-driver/base.o] Error 1 make[1]: *** [_module_/home/david/Downloads/rtl8188ce-linux-driver] Error 2 make[1]: Leaving directory `/usr/src/linux-headers-3.11.0-12-generic' make: *** [all] Error 2 

我怎样才能解决这个问题?

显然,自13.04以来,Linux标头已经发生了足够的变化,以打破这个驱动程序。 经过多天的工作,我终于修复了编译问题并让驱动程序正常工作。 您可以在我的Github回购中找到修复的驱动程序,以及Realtek发布的原始版本中所有更改的详细信息: https : //github.com/FreedomBen/rtl8188ce-linux-driver

对于那些感兴趣的人,最大的变化是删除了create_proc_entry()以及将调试信息放入/proc目录的其他相关函数。 我还没有将代码转换为使用替换函数,所以到目前为止还没有报告调试信息。 但这并不会影响驱动程序的性能。

另一个重大变化是struct ieee80211_hwstruct ieee80211_conf的重组,以及struct ieee80211_hw的添加,它取代了曾经是ieee80211_confchannel成员。

还有一个新的辅助函数cfg80211_get_chandef_type()用于检索通道类型而不是旧的直接方法。

内核3.9及更高版本不再支持rtl8188ce。

我的台式机有相同的WIFI卡。

我现在使用的最好的开源支持卡是Atheros。

  • 选项#1使用“Ubuntu 12.04 LTS”,因为它通过rtl8192ce驱动程序支持rtl8188ce。

  • 选项#2对支持开源内核的wifi卡进行研究。

  • 做研究后的选项#3,使用将使用最新内核3.12及以上的卡。

在我使用Realtek之后,我不会再使用它们,因为rtl8188ce对于Windows和Linux来说是一张糟糕的卡。