无法在Linux Mint 19.1 XFCE下编译TPLINK TL-WN822N驱动程序

时间:2019-04-11 08:41:05

标签: gcc makefile linux-device-driver

我有一个USB wifi适配器(TPLINK TL-WN822N。我从制造商download page下载了linux驱动程序,并试图对其进行编译,但是当我尝试运行make命令时,总是会出错。 >

我有一个带有XFCE桌面的Linux Mint 19.1。 uname -a提供以下内容:

  • Linux用户-HomePC 4.15.0-47-通用#50-Ubuntu SMP,3月13日星期三10:44:52 UTC 2019 x86_64 x86_64 x86_64 GNU / Linux

我认为问题是由gcc版本引起的。

我还在旧PC上安装了LXLE linux,并且可以完成驱动程序编译而没有任何错误。并且已安装的驱动程序运行正常。

  • Linux Mint有一个 gcc版本:gcc版本7.3.0(Ubuntu 7.3.0-27ubuntu1〜18.04) 制作版本:GNU Make 4.1

  • Linux LXLE具有一个 gcc版本:gcc版本5.4.0(Ubuntu 5.4.0-6ubuntu1〜16.04.11) 制作版本:GNU Make 4.1

当我启动make命令时,我收到以下消息:


make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/4.15.0-47-generic/build M=/home/user/Asztal/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047  modules
make[1]: Entering directory '/usr/src/linux-headers-4.15.0-47-generic'
  CC [M]  /home/user/Asztal/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047/core/rtw_cmd.o
In file included from /home/user/Asztal/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047/include/osdep_service.h:47:0,
                 from /home/user/Asztal/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047/include/drv_types.h:27,
                 from /home/user/Asztal/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047/core/rtw_cmd.c:17:
/home/user/Asztal/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047/include/osdep_service_linux.h: In function ‘_init_timer’:
/home/user/Asztal/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047/include/osdep_service_linux.h:299:8: error: ‘_timer {aka struct timer_list}’ has no member named ‘data’
  ptimer->data = (unsigned long)cntx;
        ^~
/home/user/Asztal/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047/include/osdep_service_linux.h:300:2: error: implicit declaration of function ‘init_timer’; did you mean ‘_init_timer’? [-Werror=implicit-function-declaration]
  init_timer(ptimer);
  ^~~~~~~~~~
  _init_timer
cc1: some warnings being treated as errors
scripts/Makefile.build:332: recipe for target '/home/user/Asztal/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047/core/rtw_cmd.o' failed
make[2]: *** [/home/user/Asztal/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047/core/rtw_cmd.o] Error 1
Makefile:1552: recipe for target '_module_/home/user/Asztal/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047' failed
make[1]: *** [_module_/home/user/Asztal/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-47-generic'
Makefile:1828: recipe for target 'modules' failed
make: *** [modules] Error 2

如果我是对的,并且问题是由较新的gcc版本引起的,那么是否可以使用其他版本的gcc进行临时编译?

如果还有其他问题,那可能是什么?

我是Linux平台的新手,也许答案是亵渎神灵,但一定会有所帮助。

ps。对不起,我的英语不是我的母语;

1 个答案:

答案 0 :(得分:0)

至少我找到了一些帮助的解决方案。在系统重启后,我做了以下操作来使USB wifi适配器工作:

  1. 检查更新:sudo apt更新
  2. 安装git:sudo apt安装git
  3. 从github下载驱动程序:git clone https://github.com/jeremyb31/rtl8192eu-linux-driver
  4. 更改为驱动程序目录:cd rtl8192eu-linux-driver
  5. 为您的内核编译驱动程序:make
  6. 将驱动程序安装到系统中:sudo make install
  7. 加载驱动程序:sudo modprobe 8192eu

但是此过程尚未完成,因为系统将使用最初安装的驱动程序,因此我们必须将其列入黑名单:

  1. 打开相应的文件:sudo nano /etc/modprobe.d/realtek.conf
  2. 将黑名单选项插入文件:黑名单rtl8xxxu
  3. 保存文件并退出
  4. 重新启动系统

现在它应该以正确的方式工作。对我来说,它奏效了。

希望,这将对某人有所帮助...