无法在 Lubuntu 18.10 上编译 rtl8821ce wifi 驱动程序

无法在 Lubuntu 18.10 上编译 rtl8821ce wifi 驱动程序

我正在尝试让 Linux 与我的联想 Yoga 530-14ARR 笔记本电脑配合使用。它有一个无线 Realtek“rtl8821ce”卡,但我新安装的 Lubuntu 18.10 无法识别它(我之前尝试过其他轻量级发行版,但没有成功)。根据这个问题的最佳答案,编译并且modprobe生成的模块应该可以解决问题。

不幸的是,我无法在我的计算机上编译它:

liloboot@lubuntu:~/rtl8821ce$ make
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/4.18.0-10-generic/build M=/home/liloboot/rtl8821ce  modules
make[1]: Entering directory '/usr/src/linux-headers-4.18.0-10-generic'
Makefile:982: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel"
  CC [M]  /home/liloboot/rtl8821ce/os_dep/linux/os_intfs.o
    /home/liloboot/rtl8821ce/os_dep/linux/os_intfs.c:1325:22: error: initialization of ‘u16 (*)(struct net_device *, struct sk_buff *, void *, u16 (*)(struct net_device *, struct sk_buff *))’ {aka ‘short unsigned int (*)(struct net_device *, struct sk_buff *, void *, short unsigned int (*)(struct net_device *, struct sk_buff *))’} from incompatible pointer type ‘u16 (*)(struct net_device *, struct sk_buff *, struct net_device *, u16 (*)(struct net_device *, struct sk_buff *))’ {aka ‘short unsigned int (*)(struct net_device *, struct sk_buff *, struct net_device *, short unsigned int (*)(struct net_device *, struct sk_buff *))’} [-Werror=incompatible-pointer-types]
  .ndo_select_queue = rtw_select_queue,
                      ^~~~~~~~~~~~~~~~
/home/liloboot/rtl8821ce/os_dep/linux/os_intfs.c:1325:22: note: (near initialization for ‘rtw_netdev_ops.ndo_select_queue’)
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:327: /home/liloboot/rtl8821ce/os_dep/linux/os_intfs.o] Error 1
make[1]: *** [Makefile:1546: _module_/home/liloboot/rtl8821ce] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.18.0-10-generic'
make: *** [Makefile:1902: modules] Error 2

编辑:根据 chili555 的评论,我尝试了。它最终成功了,但我遇到了几个问题,我想在答案中指出。见下文。

答案1

按照以下步骤操作时出现的问题及解决方案这个答案

  • 来自 Windows PC,所有脚本文件的格式都错误,导致尝试时出现“没有这样的文件或目录”错误sudo ./dkms-install.sh。我必须dos2unix全部执行。
  • 我必须手动sudo运行一些dkms命令,dkms-install.sh因为sudo ./dkms-install.sh报告的错误最终被我解释为缺乏权限。不知道为什么。

sudo dkms build -m rtl8821ce -v v5.2.5_1.26055.20180108

sudo dkms 安装-m rtl8821ce-v v5.2.5_1.26055.20180108

  • 然后我重启并 ip a显示新的wlp1s0网络接口。但我还没有脱离危险。
  • nmcli radiowifi 模块仍然被硬阻塞,如和的输出所示rfkill list。我必须添加一个条目,/etc/modprobe.d/blacklist.conf如中所述:附加到blacklist ideapad_laptop文件末尾,然后重新启动。

wifi模块现已正常工作。

相关内容