Я пытаюсь установить драйверы для беспроводной карты rosewill RNX-N600UBE (чипсет Ralink RT2870) в Kali Linux. Я скачал драйверы с их сайта и распаковал / разархивировал их, но теперь, когда я пытаюсь запустить команду «make», я получаю эту ошибку.
/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.c:1156:20: error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’
/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.c:1157:20: error: incompatible types when assigning to type ‘int’ from type ‘kgid_t’
make[4]: *** [/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.o] Error 1
make[3]: *** [_module_/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux] Error 2
make[2]: *** [sub-make] Error 2
make[1]: *** [all] Error 2
Ответы:
Проблема в том, что один из заголовков / интерфейсов ядра изменился в последнем ядре 3.x. Там, где значения UID / GID первоначально назывались обычными целыми числами, теперь они представляют собой структуры с одним элементом. Любой код, использующий старое определение, теперь не сможет скомпилироваться, пока не будет обновлен, чтобы соответствовать заголовкам нового ядра.
В настоящее время я экспериментирую с исправлением аналогичной ошибки в virtualbox-guest-utils для моей установки Ubuntu; в теории поиска и заменах экземпляров
->i_uid =
с->i_uid.val =
или->i_gid =
с->i_gid.val =
по номерам строк сообщили в ошибке должны исправить эту проблему (но я не могу гарантировать , что в это время как компиляции теперь неисправные на другую, не связанную, ошибку для меня).Лучше всего связаться с автором исходного кода для получения обновленной версии исходного кода, который работает с более новыми ядрами.
источник
current_fsuid()
наcurrent_fsuid().val
current_fsgid()
наcurrent_fsgid().val
int
в,kuid_t
похоже, тоже помогает.На этом сайте я нашел исправление ошибок компиляции в другом драйвере: http://www.arnelborja.com/compiling-rt2870-wifi-driver-in-fedora/
ниже содержание патча:
источник
kuid_t
иkgid_t
были введены. Для тех, ктоk
должен быть отброшен, какuid_t fsuid;
и вgid_t fsgid;
make
только сообщает об ошибках, но на самом деле это ошибки вашего компилятора (вероятно, gcc):По сути, ваш код содержит ошибки или не подходит для вашей платформы, но
make
работает правильно.источник
Это решение сработало для меня. Процедура, которой я следовал, была:
Я следовал инструкциям для моего дистрибутива (Debian Jessie) отсюда .
Я сохранил драйвер de для Linux производителя (который поставляется вместе с оборудованием на компакт-диске) и разархивировал его в папку.
В папке я набрал
make
(какroot
), и я получил ошибку. Итак, я сделал модификацию выше, и это сработало.Я набрал
make install
(какroot
), я перезагрузил компьютер, и беспроводной интерфейс был распознан. Я настроил это, и это сработало. ;)Моя система: Debian Jessie, ядро 3.16.0-4-amd64, использующая gnome.
источник