Saya mencoba menginstal driver untuk kartu nirkabel RNX-N600UBE yang baru (chipset Ralink RT2870) di Kali Linux. Saya mengunduh driver dari situs web mereka dan membongkar / membuka ritsletingnya, tetapi sekarang ketika saya mencoba menjalankan perintah 'make' saya mendapatkan kesalahan ini.
/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
Jawaban:
Masalahnya adalah bahwa salah satu header / antarmuka kernel berubah dalam kernel 3.x baru-baru ini. Di mana nilai-nilai UID / GID awalnya disebut sebagai bilangan bulat biasa, mereka sekarang struct dengan elemen tunggal. Kode apa pun yang mengandalkan definisi yang lebih lama sekarang akan gagal dikompilasi hingga diperbarui untuk mencocokkan header kernel yang baru.
Saat ini saya sedang bereksperimen dengan menambal kesalahan serupa di virtualbox-guest-utils untuk instalasi Ubuntu saya; dalam teori menemukan dan mengganti contoh
->i_uid =
dengan->i_uid.val =
atau->i_gid =
dengan->i_gid.val =
nomor baris yang dilaporkan dalam kesalahan harus memperbaiki masalah (tetapi saya tidak dapat menjamin bahwa saat ini karena kompilasi sekarang gagal pada kesalahan yang berbeda, tidak terkait, untuk saya).Taruhan terbaik Anda adalah menghubungi pembuat kode asli Anda untuk versi sumber yang diperbarui yang bekerja dengan kernel yang lebih baru.
sumber
current_fsuid()
menjadicurrent_fsuid().val
current_fsgid()
menjadicurrent_fsgid().val
int
kekuid_t
tampaknya juga melakukan trik.Saya menemukan perbaikan untuk kesalahan kompilasi pada driver lain di situs web ini: http://www.arnelborja.com/compiling-rt2870-wifi-driver-in-fedora/
di bawah ini adalah konten tambalan:
sumber
kuid_t
dankgid_t
diperkenalkan. Bagi mereka,k
harus dijatuhkan, seperti padauid_t fsuid;
dangid_t fsgid;
make
hanya melaporkan kesalahan tetapi sebenarnya kesalahan dari kompiler Anda (mungkin gcc):Pada dasarnya, kode Anda buggy atau tidak sesuai untuk platform Anda tetapi
make
berfungsi dengan benar.sumber
Solusi ini berhasil untuk saya. Prosedur yang saya ikuti adalah:
Saya mengikuti langkah-langkah untuk distribusi saya (Debian Jessie) dari sini .
Saya menyimpan de driver untuk Linux dari pabrikan (yang dilengkapi dengan peralatan dalam CDROM), dan saya membuka ritsletingnya ke folder.
Di folder, saya mengetik
make
(asroot
), dan saya mendapat kesalahan. Jadi, saya melakukan modifikasi di atas, dan itu berhasil.Saya mengetik
make install
(asroot
), saya reboot komputer, dan antarmuka nirkabel dikenali. Saya mengkonfigurasinya dan berhasil. ;)Sistem saya adalah: Debian Jessie, kernel 3.16.0-4-amd64, menggunakan gnome.
sumber