Im essayant d'installer des pilotes pour une carte sans fil rosewill RNX-N600UBE (chipset Ralink RT2870) sur Kali Linux. J'ai téléchargé les pilotes de leur site Web et les ai décompressés / décompressés, mais maintenant, lorsque j'essaie d'exécuter la commande «make», j'obtiens cette erreur.
/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
Réponses:
Le problème est que l'un des en-têtes / interfaces du noyau a changé dans un noyau 3.x récent. Là où les valeurs UID / GID étaient à l'origine appelées entiers normaux, ce sont maintenant des structures avec un seul élément. Tout code reposant sur l'ancienne définition ne pourra pas être compilé avant d'être mis à jour pour correspondre aux nouveaux en-têtes du noyau.
J'essaie actuellement de corriger une erreur similaire dans virtualbox-guest-utils pour mon installation Ubuntu; en théorie, la localisation et le remplacement des instances de
->i_uid =
with->i_uid.val =
ou->i_gid =
with->i_gid.val =
sur les numéros de ligne signalés dans l'erreur devraient résoudre le problème (mais je ne peux pas garantir qu'à l'heure actuelle, la compilation échoue maintenant pour une erreur différente et sans rapport avec moi).Votre meilleur pari est de contacter l'auteur d'origine de votre code pour une version mise à jour de la source qui fonctionne avec les noyaux les plus récents.
la source
current_fsuid()
pourcurrent_fsuid().val
current_fsgid()
pourcurrent_fsgid().val
int
enkuid_t
semble également faire l'affaire.J'ai trouvé un correctif aux erreurs de compilation dans un autre pilote sur ce site Web: http://www.arnelborja.com/compiling-rt2870-wifi-driver-in-fedora/
ci-dessous est le contenu du patch:
la source
kuid_t
etkgid_t
ont été introduits. Pour ceux-ci,k
doit être abandonné, comme dansuid_t fsuid;
etgid_t fsgid;
make
ne rapporte que les erreurs mais ce sont en fait des erreurs de votre compilateur (probablement gcc):Fondamentalement, votre code est bogué ou inapproprié pour votre plate-forme mais
make
fonctionne correctement.la source
Cette solution a fonctionné pour moi. La procédure que j'ai suivie était:
J'ai suivi les étapes de ma distribution (Debian Jessie) à partir d' ici .
J'ai enregistré le pilote pour Linux du fabricant (fourni avec l'équipement sur le CD-ROM) et je l'ai décompressé dans un dossier.
Dans le dossier, j'ai tapé
make
(asroot
) et j'ai eu une erreur. J'ai donc fait la modification ci-dessus, et cela a fonctionné.J'ai tapé
make install
(asroot
), j'ai redémarré l'ordinateur et l'interface sans fil a été reconnue. Je l'ai configuré et cela a fonctionné. ;)Mon système est: Debian Jessie, noyau 3.16.0-4-amd64, utilisant gnome.
la source