Problem with writing module
|
2005-10-15, 07:05 PM,
ارسال : #1
|
|||
|
|||
Problem with writing module
Hello
I am new in making module in linux ,I treid the first module programming as you see as follows /* * 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"); } Then the tutorials told me for comoling the module I should use the following commands 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 would you please explain me what is $(sehll uname –r) and M=$(PWD) Sincerely yours Mohsena |
|||
2005-10-17, 07:59 AM,
ارسال : #2
|
|||
|
|||
براي كامپايل ماژولت در عمل فقط به خط اول Make File فوق "نياز" داري ؛ بهتره براي شروع از Kbuild استفاده كني و خودتو درگير Make File ها نكني ؛ اما در جواب سوالت : از uname -r براي مشخص كردن محل هدرهاي كرنل استفاده ميشه و از PWD$ براي دريافت محل فعلي كه Main Treeي سورس ماژول اونجاست و در كنار هدرهاي كرنل بايد از كدهاي آپديت شده موجود در اين محل هم استفاده بشه
|
|||
2005-10-17, 06:20 PM,
ارسال : #3
|
|||
|
|||
uname -r نسخه کرنل رو نشون میده . مثلا تو سیستم من 386-2-2.6.8 است . تو دایرکتوری lib/modules/ یه دایرکتوری به همین نام است که محل قرار گیری تمام ماجول های کرنل است . تو این دایرکتوری یه لینک است به نام build که به محل قرارگیری فایل های header و Makefile های کرنل اشاره می کند . PWD$ هم به دایرکتوری جاری که Makefile قرار دارد اشاره می کند . شما باید همون طور که در tutorial گفته شده دستورات بین obj-m و clean رو در یک فایل به نام Makefile بذاری و با اجرای دستور make ماجول شما توسط مکانیزم kbuild ساخته خواهد شد .
|
|||
|