[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Hola Mundo en Kernel - Ayuda !!



Cristian Prado writes:

> Hola a todos
> Estoy empezando a estudiar linux y queria hacer mi primer driver vacio basandome en un tutorial que anda por alli:
> Esto va en el archivo nada.c
>
> #define MODULE
>
> #include <linux/module.h>
>
> NO puedo pasar la compilacion :
> gcc -I/usr/src/linux/include -O -Wall -c nada.c
> o
> gcc -I/usr/include/kunittest -O -Wall -c nada.c
>
> sabiendo que el archivo module.h esta en /usr/include/kunittest:
> linuser@debian:/usr/include/kunittest$ ls
> kunittest_export.h  module.h  runner.h  tester.h
>
> linuser@debian:~/workspace/MI_PROGRAMA$ gcc -I/usr/include/kunittest -O -Wall -c nada.c
> nada.c:2:26: error: linux/module.h: No such file or directory
> linuser@debian:~/workspace/MI_PROGRAMA$
>
> Uso:
> Distributor: Debian
> Build Date: 11/12/2010

Yo tengo un esqueleto parecido. El archivo para compilar, llamado
hello.c sería algo así:

#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
  printk(KERN_ALERT "Hello, world\n");
  return 0;
}
static void hello_exit(void)
{
  printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);

y un Makefile para construirlo cómodamente:

obj-m:= hello.o

default:
	$(MAKE) -C $(KERNELDIR) M=$(shell pwd) modules

Ni siquiera necesitas tener el código fuente del kernel, sólo las
cabeceras. Por ejemplo, yo tengo instalado el paquete
linux-headers-2.6.32-5-amd64, que es el que se corresponde con mi
versión de kernel y arquitectura. Para compilar, sólo tienes que
especificar en qué directorio están las cabeceras (puedes utilizar dpkg
-L para averiguarlo, pero es generalmente bajo el directorio /usr/src/):

$ make KERNELDIR=/usr/src/linux-headers-2.6.32-5-amd64/

-- 
Alberto


Reply to: