Error al compilar modulo hello.c

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: maiku, akodo

Responder
MiSsiL17
Forista Nuevo
Forista Nuevo
Mensajes: 2
Registrado: Mié Mar 09, 2011 11:41 am

Error al compilar modulo hello.c

Mensaje por MiSsiL17 »

Hola que tal,...

Como dice el titulo estoy tratando de compilar un ejemplo de un modulo y me genera el siguiente error...
Imagen

Anexo Código de hello-1.c

Código: Seleccionar todo

/*  
 *  hello-1.c - The simplest kernel module.
 */
#include <linux/module.h>	/* Needed by all modules */
#include <linux/kernel.h>	/* Needed for KERN_INFO */

int init_module(void)
{
	printk(KERN_INFO "Hello world 1.\n");

	/* 
	 * A non 0 return means init_module failed; module can't be loaded. 
	 */
	return 0;
}

void cleanup_module(void)
{
	printk(KERN_INFO "Goodbye world 1.\n");
}
Datos:
SO-Xubuntu 10.1 desinstale y reinstale headers, kbuild, build-essential actualice apt-file y aun me genera errores :?

Alguien me puede sugerir alguna solución?

Y despues de explicar mi problema, agradezco de toda fe, el tiempo que se tomaran para leer este post =D>

Avatar de Usuario
blakeyed
Forista Nuevo
Forista Nuevo
Mensajes: 33
Registrado: Dom Feb 13, 2011 9:51 pm

Re: Error al compilar modulo hello.c

Mensaje por blakeyed »

Crea un Makefile. Compilar módulos con GCC a pelo es complicadillo.

El Makefile es sencillo:
$ nano Makefile (o el editor que más cómodo te resulte):

Código: Seleccionar todo

obj-m += hello-1.o

all:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Una cosa debajo de all: y clean: y antes de make, usa tabuladores, ya que si usas espacios no va a funcionar.

Luego para compilar haces:

$ make

Y ya para insertar el módulo

$ sudo insmod hello-1.ko
Sólo el último paso debes hacerlo como root.

De todas formas, los módulos antes de nada tienen que incluir la licencia, tienes que escribir:

Código: Seleccionar todo

MODULE_LICENSE("GPL");
justo debajo de los #includes. Si no, cada vez que cargues tu módulo, el kernel se quejará diciendo que lo estás deshonrando.

Vía dmesg podrás ver los resultados de este hello-1.ko
Saludos
Gaspar Fernández
http://totaki.com/poesiabinaria

Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: Error al compilar modulo hello.c

Mensaje por hipersayan_x »

1°) gcc, NUNCA JAMAS se lanza con sudo.
2°) Para localizar las cabeceras del kernel se hace así:

Código: Seleccionar todo

echo $(find /usr/src -iname kernel.h -print0|grep -FzZ include/linux/kernel.h)
3°) Leéte esta guía
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net

MiSsiL17
Forista Nuevo
Forista Nuevo
Mensajes: 2
Registrado: Mié Mar 09, 2011 11:41 am

Re: Error al compilar modulo hello.c

Mensaje por MiSsiL17 »

hipersayan_x escribió:1°) gcc, NUNCA JAMAS se lanza con sudo.
2°) Para localizar las cabeceras del kernel se hace así:

Código: Seleccionar todo

echo $(find /usr/src -iname kernel.h -print0|grep -FzZ include/linux/kernel.h)
3°) Leéte esta guía
Woooow estoy checando el link, es lo malo de ser muy nuevo en esto, no se sabe bien donde buscar....

Utilizaba sudo con gcc porque no me hacia nada y se debía a que no sabia como hacerlo =/

terminare de leer la guía y aplicare lo leído, un saludo hipersayan, blackeyed... Se los agradezco... :D

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje