2016-03-26 15 views
-3

Yapım günlüğüne sahip bir linux modülleri yazdım. Ben de Makefile'yi yaratmaya çalışıyorum, ama çalıştırdığımda, sadece bunun gibi başarısız (aşağıdaki resim).Yapı doğum günü için Makefile (linux modülü)

Makefile'imin bir sorunu olduğunu düşünüyorum, ancak bunu çözemiyorum.

#include<linux/init.h> 
#include<linux/kernel.h> 
#include<linux/module.h> 
#include<linux/types.h> 
#include<linux/slab.h> 
#include<linux/random.h> 

struct birthday { 
    int day; 
    int month; 
    int year; 
    struct list_head list; 
} 

struct birthday *my_bday, *tmp; *ptr; 
struct list_head *pos; 

int simple_init(void) 
{ 
    int i, day, month, year; 
    my_bday = kmalloc(sizeof(*my_bday), GFP_KERNEL); 
    my_bday->day = 30; 
    my_bday->month = 5; 
    my_bday->year = 1984; 

    INIT_LIST_HEAD(&(my_bday->list)); 
    printk(KERN_INFO "Loading Module\n"); 
    for(i = 0; i < 5 ; ++i) { 
     ptr = kmalloc(sizeof(*ptr), GFP_KERNEL); 
    get_random_bytes(&day, 1); 
    ptr->day = day % 31; 
    if(ptr->day <0) 
     ptr->day = ptr->day * -1; 
    get_random_bytes(&month, 1); 
    ptr->month = month % 12; 

    if(ptr->month < 0) 
     ptr->month = ptr->month * -1; 
    get_random_bytes(&year, 1); 
    ptr->year = (year % 2000) + 1900; 
    if(ptr->year <0) 
     ptr->year = ptr->year * -1; 
    list_add(&(ptr->list),&(my_bday->list)); 
    } 

    printk(KERN_INFO "Traversing the list using list_for_each()\n"); 
    list_for_each(pos, &(my_bday->list)) { 
     tmp = list_entry(pos, struct birthday, list); 
     printk("day = %d month = %d year = %d\n",tmp->day, tmp->month, tmp->year); 
    return 0; 
} 

void simple_exit(void) 
{ 
    printk(KERN_INFO "Removing Module\n"); 

    list_for_each_entry_safe(ptr, tmp, &my_bday->list, list) { 
    list_del(&*ptr->list)); 
    kfree(ptr); 
    } 
} 

module_init(simple_init); 
module_exit(simple_exit); 

Ve bu Makefile benim kodudur:

obj-m += birthday.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 

enter image description here

+0

İlgili parçaları yayınlamayın bağlantılar olarak. Ve metin görüntülerini gönderme! – Olaf

+0

Ve C ve C++ ** farklı dillerdir! İlişkili olmayan dilleri kullanmayın. – Olaf

+0

Yapı bildiriminden sonra noktalı virgül koyun –

cevap

0

yapmak dosyasında bu obj-m olmalıdır: = birthday.o

birthday.c dosyası vardır bazı hatalar ve makefile

+0

Lütfen noktanızı biraz detaylandırın, aksi halde yanıt olarak kapalı olacaktır. 'birthday.c dosyasının bazı hataları vardır ve makefile iyidir 'sonra bu hataları açıklayın. – surajsn