
Estoy intentando crear un controlador de dispositivo Linux para un Devkit 8000. Recibo el siguiente mensaje de error:
Cuando trato de seguir sus instrucciones, me hacen un montón de preguntas de sí o no que realmente no entiendo. Al final, puedo elegir entre 25 procesadores diferentes(?):
Aquí está mi archivo MAKE:
ifeq ($(KERNELRELEASE),)
KERNELDIR = ~/sources/linux-3.2.6
PWD := $(shell pwd)
modules:
$(MAKE) ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi- -C $(KERNELDIR) M=$(PWD) modules
.PHONY: modules clean
else
# called from kernel build system: just declare what our modules are
obj-m := LED_timer.o
endif
No creo que mi código en sí sea relevante todavía, ademássaberque mi código fuente está plagado de errores, no querrás ver eso, jaja.
Respuesta1
No ha dicho de dónde sacó la fuente que está utilizando, pero evidentemente no es válida .config
. Esto se utiliza para configurar varias opciones, como el tipo de procesador. Hay literalmente cientos de estas opciones con intrincadas dependencias entre sí (por ejemplo, el procesador que elija afectará las otras opciones que tenga).
La fuente de vainilla no .config
contiene; debe proporcionar o crear uno. make oldconfig
Se utiliza cuando .config
es de una versión anterior y debe actualizarse. A veces, este proceso no se puede automatizar completamente y básicamente terminas ejecutando make config
, que utiliza una interfaz CLI; Esto también podría ser lo que sucede si lo intentas make oldconfig
sin configuración.
Deberías mirar los más gráficos make menuconfig
para tener una mejor perspectiva de de qué se trata todo esto.
Sin embargo, comenzar desde cero e intentar obtener una configuración que funcione para usted será imposible a menos que sepa lo que está haciendo. Lo ideal sería comenzar con el que se utilizó para crear el kernel en ejecución. Esto es especialmente cierto si sólo estás construyendo un módulo; Si bien no es necesario construir el kernel real, para compilar el módulo se debe saber cómo se compiló el kernel para el que se utilizará.
Con suerte, podrá encontrarlo en /proc/config.gz
el sistema de destino. Este no es un archivo en el disco; el sistema debe estar ejecutándose para poder recuperarlo. Está comprimido así
gunzip config.gz
mv config .config
Deberías hacerlo. Copie eso en su árbol de fuentes y ejecútelo make menuconfig
para agregar instrucciones para el módulo que desea construir.
Si eso no existe, tendrá que localizar la configuración que se utilizó. Tenga en cuenta también que debe utilizar exactamente la misma versión del kernel si está creando un módulo.
Aquí estáuna visión generaldel proceso de compilación, que también podría ser útil, lea primero los puntos 2 y 3.
Respuesta2
Primero tenemos que borrar la configuración anterior, como make mrproper
.
Después de eso recién ejecutado make menuconfig
. Si definitivamente seleccionó elementos no deseados, .config
no se crearán.