Я пытаюсь скомпилировать драйвер, поставляемый с адаптером Wi-Fi Ralink 5370, который я купил, для Lubuntu 14.4.1 (32-битная версия). Я использую 3.16.0-24-generic .

Файл заголовка дает ошибку преобразования типов при попытке компиляции , используя sudo make в соответствии с общей процедурой здесь:

/home/username/wifidriver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/sta_ioctl.c: In function ‘rt_ioctl_giwscan’:
./arch/x86/include/asm/string_32.h:182:25: warning: array subscript is below array bounds [-Warray-bounds]
 #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                         ^
include/net/iw_handler.h:542:3: note: in expansion of macro ‘memcpy’
   memcpy(stream + point_len, extra, iwe->u.data.length);
   ^
  CC [M]  /home/username/wifidriver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/rt_linux.o
/home/username/wifidriver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/rt_linux.c: In function ‘__RtmpOSFSInfoChange’:
/home/username/wifidriver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/rt_linux.c:1126:20: error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’
   pOSFSInfo->fsuid = current_fsuid();
                    ^
/home/username/wifidriver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/rt_linux.c:1127:20: error: incompatible types when assigning to type ‘int’ from type ‘kgid_t’
   pOSFSInfo->fsgid = current_fsgid();
                    ^
scripts/Makefile.build:257: recipe for target '/home/username/wifidriver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/rt_linux.o' failed
make[2]: *** [/home/username/wifidriver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux/../../os/linux/rt_linux.o] Error 1
Makefile:1345: recipe for target '_module_/home/username/wifidriver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux' failed
make[1]: *** [_module_/home/username/wifidriver/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO/os/linux] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-24-generic'
Makefile:356: recipe for target 'LINUX' failed
make: *** [LINUX] Error 2

Соответствующий вывод от lsusb

Bus 001 Device 002: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter

Как я должен подходить к этому? Эта ошибка компилятора выглядит достаточно странно для меня, чтобы задаться вопросом, должен ли я углубляться в нее; т.е. если бы мое время было лучше потрачено как-то иначе.

1 ответ1

0

Для справки любого, кто пытается решить ту же проблему, правильный ответ состоял в том, чтобы игнорировать предоставленный поставщиком драйвер устройства и использовать вместо этого предварительно скомпилированный драйвер Debian rt2800usb - просто apt-get install firmware-ralink; sudo modprobe rt2800usb; , Судя по всему, драйвер Ralink нуждается в исправлении, чтобы компилировать его начиная с 12-й версии Ubuntu.

@ Michael Kjörling, спасибо за разъяснения. Я действительно намеревался вывести код ошибки, чтобы просто подчеркнуть невероятность того, что самое простое и лучшее решение - начать взламывать код драйвера. В любом случае, у меня нет достаточно времени или навыков в C, чтобы вникать в аппаратные драйверы. Было непросто узнать, как использовать SE, поскольку распознавание ошибки драйвера устройства по ошибке компилятора при сборке под Linux может быть любым из трех.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .