2012-04-20 24 views
5

Estoy tratando de compilar el kernel de Linux: http://tldp.org/LDP/lkmpg/2.6/html/lkmpg.htmlCompilación del núcleo de Linux - hola mundo

Tengo un sencillo programa hola mundo hola-1.cpp

#include <linux/module.h> 
#include <linux/kernel.h> 

int init_module(void) 
{ 
    return 0; 
} 

void cleanup_module(void) 
{ 
} 

Pero estoy tratando de construirlo utilizando el archivo Makefile:

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 

Me sale un par de errores.

make -C /home/pacman/linux-2.6.34.11/2.6.35.6-45.fc14.i686/build M=/home/pacman/p1 modules 
make: *** /home/pacman/linux-2.6.34.11/2.6.35.6-45.fc14.i686/build: No such file or directory. Stop. 

marca: * [todos] Error 2

Estoy olvidando a definir algo?

+0

En mi caso el ejemplo compilado correctamente. En su caso, el directorio de compilación que está pasando como argumento para hacer no se encuentra. Intente seguir el tutorial en este [sitio web] (http://www.cyberciti.biz/tips/compiling-linux-kernel-module.html) para ver si resuelve su problema o como alternativa puede buscar la construcción dir de la versión de kernel y pasarlo como un argumento de make. – bacchus

+0

Cuando lista el contenido de – user289925

+0

En el directorio /home/pacman/linux-2.6.34.11, ¿esperaba ver un directorio o archivo de compilación? Tengo un archivo Kbuild. – user289925

Respuesta

1

Renombrar hello-1. cpp a hello-1. c (módulos deben ser escritos en C) y añadir las líneas:

module_init(init_module); 
module_exit(cleanup_module);