Nowe posty

Autor Wątek: Kompilacja z include'ami z kernela.  (Przeczytany 3389 razy)

kropka

  • Gość
Kompilacja z include'ami z kernela.
« dnia: 2011-06-17, 12:33:20 »
Cześć,

mam Ubuntu 10 i już od samego początku nie potrafiłem na nim skompilować programu w C, który includuje nagłówki jądra systemu. Na początku co mnie bardzo denerwuje wszystkie potrzebne pliki nie znajdują się w odpowienim miejscu czyli w /usr/include tylko w /usr/src/XXX i trzeba podawać do nich ścieżki. Drugie, najważniejsze, że jak już wszystkie zależności uda się dołączyć do pliku źródłowego to zaczyna sypać mnóstwem błędów typu: "error: ‘nodemask_t’ has no member named ‘bits’". Zdaję sobie sprawę z tego, że to nie jest wina kodu kernela tylko pewnie jakichś dodatkowych zależności lub ich nieprawidłowych wersji.

Co zrobiłem to pobrałem najnowsze źródła 2.6.39.1 i je skompilowałem bez problemu. Następnie napisałem prosty "driver", który wymaga zależności kernela:
#define MODULE
#include "linux/module.h"

int init_module(void)
{
printk("<1>Hello World\\n");
return 0;
}

void cleanup_module(void)
{
printk("<1>Hell yeah!\\n");
}
Następnie kompilacja:
gcc -c kernel_driver.c -I/home/dos/dos/linux-2.6.39.1/include/ -I/home/dos/dos/linux-2.6.39.1/arch/x86/include
oczywiście kończy się niepowodzeniem. Tony błędów typu, który napisałem powyżej, zalewają minie ze wsząd.

Proszę o pomoc w tej sprawie lub naprowadzenie mnie na właściwe tory.
Dziękuję
Jacek

chmooreck

  • Gość
Kompilacja z include'ami z kernela.
« Odpowiedź #1 dnia: 2011-06-17, 12:51:11 »

kropka

  • Gość
Kompilacja z include'ami z kernela.
« Odpowiedź #2 dnia: 2011-06-17, 15:20:46 »
Dziekuję bardzo. :)

Wszystko się kompiluje i ładnie działa. Ta strona poprowadziła mnie też do http://www.tldp.org/LDP/lkmpg/2.6/html/ :)

Jednak coś mnie uwiera. Nie lubię jak czegoś nie rozumiem i nie wiem co dokładnie robi
make -d -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
Wiem, że przenosi się do katalogu /lib/modules/2.6.35-28-generic-pae/build itd ale na jakiej podstawie buduje on zaleności.
Tak czy siak, na razie nie wiem. Może kiedyś się dowiem.