Próbuję zainstalować sterowniki do karty RNX-N600UBE dla róży wolnej (chipset Ralink RT2870) w systemie Kali Linux. Pobrałem sterowniki z ich witryny i rozpakowałem / rozpakowałem je, ale teraz, gdy próbuję uruchomić polecenie „make”, pojawia się ten błąd.
/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
Odpowiedzi:
Problem polega na tym, że jeden z nagłówków / interfejsów jądra zmienił się w ostatnim jądrze 3.x. Tam, gdzie wartości UID / GID były pierwotnie nazywane zwykłymi liczbami całkowitymi, są one teraz strukturami z jednym elementem. Kod oparty na starszej definicji nie będzie się teraz kompilował, dopóki nie zostanie zaktualizowany w celu dopasowania do nowych nagłówków jądra.
Obecnie eksperymentuję z łataniem podobnego błędu w virtualbox-guest-utils dla mojej instalacji Ubuntu; Teoretycznie lokalizowania i zastąpienie wystąpień
->i_uid =
z->i_uid.val =
albo->i_gid =
z->i_gid.val =
na numery linii podano w błąd powinno rozwiązać problem (ale nie mogę zagwarantować, że w tej chwili jako kompilacji jest teraz upadającego na innej, niezwiązanej, błędu dla mnie).Najlepszym rozwiązaniem jest skontaktowanie się z oryginalnym autorem kodu w celu uzyskania zaktualizowanej wersji źródła współpracującego z nowszymi jądrami.
źródło
current_fsuid()
nacurrent_fsuid().val
current_fsgid()
nacurrent_fsgid().val
int
dokuid_t
również wydaje się rade.Znalazłem naprawę błędów kompilacji w innym sterowniku na tej stronie: http://www.arnelborja.com/compiling-rt2870-wifi-driver-in-fedora/
poniżej znajduje się treść poprawki:
źródło
kuid_t
ikgid_t
zostały wprowadzone. Dla tychk
należy upuścić, jak wuid_t fsuid;
igid_t fsgid;
make
zgłasza tylko błędy, ale w rzeczywistości są to błędy kompilatora (prawdopodobnie gcc):Zasadniczo kod jest błędny lub nieodpowiedni dla Twojej platformy, ale
make
działa poprawnie.źródło
To rozwiązanie działało dla mnie. Postępowałem zgodnie z procedurą:
Postępowałem zgodnie z instrukcjami dotyczącymi mojej dystrybucji (Debian Jessie) stąd .
Zapisałem sterownik dla Linuksa producenta (dostarczany ze sprzętem na CDROM) i rozpakowałem go do folderu.
W folderze wpisałem
make
(asroot
) i dostałem błąd. Więc zrobiłem powyższą modyfikację i zadziałało.Wpisałem
make install
(asroot
), ponownie uruchomiłem komputer i interfejs bezprzewodowy został rozpoznany. Skonfigurowałem i działało. ;)Mój system to: Debian Jessie, jądro 3.16.0-4-amd64, przy użyciu gnome.
źródło