Erro ao compilar drivers para o Ralink RT2870

14

Estou tentando instalar drivers para uma placa wireless RNX-N600UBE (Ralink RT2870) no Kali Linux. Eu baixei os drivers do site deles e os descompactei / descompactei, mas agora, quando tento executar o comando 'make', recebo esse erro.

/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
    
por Fox 16.04.2014 / 12:26

4 respostas

19

O problema é que um dos cabeçalhos / interfaces do kernel foi alterado em um kernel 3.x recente. Onde os valores de UID / GID foram originalmente referidos como inteiros regulares, eles são agora estruturas com um único elemento. Qualquer código que se baseie na definição mais antiga agora falhará em compilar até ser atualizado para corresponder aos novos cabeçalhos do kernel.

Atualmente, estou experimentando corrigir um erro semelhante em virtualbox-guest-utils para minha instalação do Ubuntu; Em teoria, localizar e substituir instâncias de ->i_uid = com ->i_uid.val = ou ->i_gid = com ->i_gid.val = nos números de linha relatados no erro deve corrigir o problema (mas não posso garantir que, no momento, como a compilação está agora falhando) em um erro diferente, não relacionado, para mim).

Sua melhor opção é entrar em contato com o autor original do seu código para obter uma versão atualizada da fonte que funciona com os novos kernels.

    
por 24.07.2014 / 16:06
10

Encontrei uma correção nos erros de compilação em outro driver neste site: link

abaixo é o conteúdo do patch:

--- include/os/rt_linux.h   2013-09-12 13:27:14.000000000 +0800
+++ include/os/rt_linux.h.patched   2014-03-23 11:45:03.907628847 +0800
@@ -279,8 +279,8 @@ typedef struct file* RTMP_OS_FD;

 typedef struct _OS_FS_INFO_
 {
-   int             fsuid;
-   int             fsgid;
+   kuid_t              fsuid;
+   kgid_t              fsgid;
    mm_segment_t    fs;
 } OS_FS_INFO;
    
por 28.09.2014 / 16:26
2

make apenas relata os erros, mas eles são, na verdade, erros do seu compilador (provavelmente gcc):

error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’ 

Basicamente, seu código é problemático ou inadequado para sua plataforma, mas make funciona corretamente.

    
por 16.04.2014 / 12:31
1

Esta solução funcionou para mim. O procedimento que segui foi:

  1. Eu segui os passos para minha distribuição (Debian Jessie) de aqui .

  2. Guardei o driver do Linux para o fabricante (que acompanha o equipamento no CD-ROM) e o descompactei para uma pasta.

  3. Na pasta, digitei make (como root ) e recebi um erro. Então, fiz a modificação acima e funcionou.

  4. Digitei make install (como root ), reinicializei o computador e a interface sem fio foi reconhecida. Eu configurei e funcionou. ;)

Meu sistema é: Debian Jessie, kernel 3.16.0-4-amd64, usando o gnome.

    
por 17.07.2016 / 17:56