PDA

Ver la versión completa : Compilacion cruzada driver wifi



crossmax
12/08/2014, 14:12
Buenas amigos!

Ando intentando hacer una compilacion cruzada desde mi Ubuntu para obtener el .ko para ARM de un driver para un usb wifi rtl8188eu.
El caso es que nunca lo he hecho y no acabo de conseguirlo.
Me he traido los fuentes con git, he instalado gcc-arm-linux-gnueabi y estoy intentando compilar con el Makefile que trae los fuentes pero añadiendo el flag para la compilacion cruzada:

Si no fuera cruzada indican hacer esto
CONFIG_RTL8188EU=m make -C /usr/src/linux-`uname -r` M=`pwd`
y yo añado
ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-

Pero me da error:
include/uapi/asm-generic/int-ll64.h:11:29: error fatal: asm/bitsperlong.h: No existe el archivo o el directorio


que por lo que he leido es porque debería usar el kernel "objetivo" (vamos, el arm) y esta tirando del kernel de mi PC.

Sabéis por donde estoy fallando y por donde debería tirar??? Es que ando sin ideas.

Gracias!!!

bitrider
12/08/2014, 14:16
Me da que vas a necesitar las fuentes del kernel para el cual estás intentando compilar el módulo. O, por lo menos, las headers.

crossmax
12/08/2014, 14:22
He visto que usan pacman para instalar los headers del sistema objetivo...
Pero debe ser otro pacman porque con un apt-get me instala el jueguecito [Ahhh]

¿Como puedo conseguir las fuentes o las headers de mi kernel arm?

Dullyboy
12/08/2014, 14:29
He visto que usan pacman para instalar los headers del sistema objetivo...
Pero debe ser otro pacman porque con un apt-get me instala el jueguecito [Ahhh]

¿Como puedo conseguir las fuentes o las headers de mi kernel arm?

¿pacman, instalar? pacman es el gestor de paquetes de Archlinux (no se si estoy siendo pedante o era ese el problema :)).

crossmax
12/08/2014, 14:35
¿pacman, instalar? pacman es el gestor de paquetes de Archlinux (no se si estoy siendo pedante o era ese el problema :)).

Ni pedante ni ese era el problema :D soy yo que estoy medio tonto. Cierto es que lo que he estado leyendo en varios sitios era para Archlinux y tonto de mi lo he instalado en mi Ubuntu. Logicamente el repositorio me ha localizado el magnifico juego pacman :)

El caso es que no se como hacer uso de las fuentes o headers del ARM en mi PC para hacer una compilacion cruzada correcta

Dullyboy
12/08/2014, 17:43
Ni pedante ni ese era el problema :D soy yo que estoy medio tonto. Cierto es que lo que he estado leyendo en varios sitios era para Archlinux y tonto de mi lo he instalado en mi Ubuntu. Logicamente el repositorio me ha localizado el magnifico juego pacman :)

El caso es que no se como hacer uso de las fuentes o headers del ARM en mi PC para hacer una compilacion cruzada correcta

Decía el problema con lo de que instalase el comecocos :D. El problema original, si no puedes hacer el paso que viste cambiando pacman por apt-get, está fuera del mi conocimiento computeril :lol:.

dardo
16/08/2014, 10:06
En el ARM tienes unas versión del kernel determinada, y en tu PC tienes otra distinta. La última vez que hice compilaciín cruzada fue de SPARC64 a SPARC32 y eso fue como hace diez años, normalmente compilo en la propia máquina destino así tarde un siglo.

El uname -r no lo puedes usar porque sólo te vale para la versión local.

Asi como ejemplo te diré que si ejecuto eso en mi equipo me devuelve:


samuel@buttercup:~$ uname -r
3.14-2-samuelman.3

Porque obviamente es un kernel que me he compilado yo mismo para mi equipo, pero la versión que vas a instalar en tu dispositivo ARM no es esa. Así que en el -C tienes que indicar la ruta a los fuentes del kernel que vas a usar para el ARM. Ya sé que no vas a compilar un kernel entero, sólo quieres un módulo, pero necesitas los fuentes igual.

Con respecto a que no encuentra el fichero asm/bitsperlong.h seguramente haya cambiado de nombre o de ruta. Probablemente ahora esté en asm-generic/bitsperlong.h

De todas maneras el código para los SoC ARM tarda mucho en ser incluído en la rama principal del kernel de Linux. Es recomendable descargar las fuentes de algún otro proyecto que sea específico de gente que yua ha inclúido el código para ARM en versiones recientes.

Si el dispositivo ARM que tienes entre manos es una rasperry pi puedes mirar y considerar usar rpi-build

crossmax
17/08/2014, 17:52
Buenas, muchas gracias por tu comentario.
No, no ando con una raspberry, aunque bien me vendría porque hay mucho más para ella y con raspbian tienes prácticamente un Linux de escritorio.
El problema es que no se de donde sacar las fuentes del kernel para poder compilar con ellas y no coja las de mi Pc. Con el módulo embebido me venía un BP que básicamente es una imagen virtual de un kubuntu del año de la pera y un eclipse personalizado que se supone hace las compilaciones cruzadas. Pero no se como puedo tirar de ahí para compilar los fuentes del wifi y sacarme el ko que necesito.

Y por tirar por otro lado, si busco el gcc para el Linux embebido, como debería estar preconizado para que me funcione en mi ARM920T? Es decir, cualquier gcc para arm9 me servirá? O depende de más cosas (quizás la versión de mi kernel) ?

Mil gracias