2012-04-20 16 views
5

Próbuję skompilować jądro Linux: http://tldp.org/LDP/lkmpg/2.6/html/lkmpg.htmlLinux - hello world

mam prosty powitania światowego programu hello-1.cpp

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

int init_module(void) 
{ 
    return 0; 
} 

void cleanup_module(void) 
{ 
} 

Ale staram się go zbudować przy użyciu pliku 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 

Dostaję kilka błędów.

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. 

Producent: * [wszystkie] Błąd 2

jestem zapominając zdefiniować coś?

+0

W moim przypadku np skompilowany poprawnie. W twoim przypadku nie znaleziono katalogu budowania, który przekazujesz jako argument do wykonania. Postaraj się postępować zgodnie z samouczkiem na tej stronie [http://www.cyberciti.biz/tips/compiling-linux-kernel-module.html), aby sprawdzić, czy rozwiązuje on Twój problem, lub, alternatywnie, możesz wyszukać kompilację dir wersji jądra i przekazuj go jako argument make. – bacchus

+0

Kiedy wyświetlam zawartość katalogu – user289925

+0

W katalogu /home/pacman/linux-2.6.34.11 czy powinienem zobaczyć katalog lub plik kompilacji? Mam plik Kbuild. – user289925

Odpowiedz

1

Zmień nazwę hello-1. cpp na cześć-1. c (moduły muszą być napisane w języku C) i dodać linie:

module_init(init_module); 
module_exit(cleanup_module);