Objetivo
Estoy tratando de escribir un controlador de dispositivo simple en Ubuntu. Quiero hacer esto usando Eclipse (o un IDE mejor que sea adecuado para la programación del controlador). Aquí está el código:
#include <linux/module.h>
static int __init hello_world( void )
{
printk( "hello world!\n" );
return 0;
}
static void __exit goodbye_world( void )
{
printk( "goodbye world!\n" );
}
module_init( hello_world );
module_exit( goodbye_world );
Mi esfuerzo
Después de investigar un poco, decidí usar Eclipse CTD para desarrollar el controlador (aunque todavía no estoy seguro de si es compatible con herramientas de depuración de subprocesos múltiples). Asique:
- Instalé Ubuntu 11.04 Desktop x86 en una máquina virtual VMWare,
- Instalado
eclipse-cdty linux-headers-2.6.38-8 usando Synaptic Package Manager, - Creé un código anterior con
C ProjectnombreTestDriver1y copiado, - Cambió el comando de compilación predeterminado
make, al siguiente comando de compilación personalizado:
make -C /lib/modules/2.6.38-8-generic/build M=/home/isaac/workspace/TestDriver1
El problema
Recibo un error cuando intento construir este proyecto usando eclipse. Aquí está el registro de la compilación:
**** Compilación de configuración de depuración para el proyecto TestDriver1 ****
make -C /lib/modules/2.6.38-8-generic/build M = / home / isaac / workspace / TestDriver1 all
make: Entrando en el directorio '/usr/src/linux-headers-2.6.38-8-generic'
make: *** Ninguna regla para hacer objetivo a
vmlinux', needed bytodos '. Detener.make: Saliendo del directorio '/usr/src/linux-headers-2.6.38-8-generic'
Curiosamente, no obtengo ningún error cuando lo uso en shelllugar de eclipseconstruir este proyecto. Para usar shell, solo creo un Makefilecontenedor obj-m += TestDriver1.oy uso el makecomando anterior para construir.
Entonces, algo debe estar mal con el eclipse Makefile. Tal vez está buscando la vmlinuxarquitectura (?) O algo mientras la arquitectura actual es x86. ¿Quizás es por VMWare?
Como entendí, eclipsecrea los archivos MAKE automáticamente y modificarlos manualmente causaría errores en el futuro O makefiledificultaría la administración .
Entonces, ¿cómo puedo compilar este proyecto en eclipse?
autotoolscomplemento pronto. ¿Conoces algún IDE mejor para la programación del controlador? ¿Crees que yo (un usuario vago de VS que no tengo experiencia en Linux) puedo manejarlomakefile? ¿Esmakefilerealmente manejable en grandes proyectos?