红联首页 凝聚Linux人的力量
菜鸟过关 | 精华文档 | 同城人(交友) | 我与Linux的故事 | Linux新闻 | Linux视频 | Linux人才 | 软件下载 | 大学校园 | English
发新话题
打印

各位老大帮小弟看看!!(恳求)

各位老大帮小弟看看!!(恳求)

小弟我,刚接触linux驱动,买了本《linux设备驱动程序》学习。可是刚看就遇到了问题:
我按照书写了个makefile文件
#如果已定义KERNELRELEASE,则说明是从内核构造系统调用的,
#因此可以利用期内建语句。
ifneq ($(KERNELRELEASE),)
     obj-m :=hello.o

#否则,是直接从命令行调用的,
#这是要调用内核构造系统。
else

    KERNELDIR ?= /lib/modules/$(shell uname -r)/build
    PWD := $(shell pwd)
default:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif

书中的hello.c也是搬书上的,可是总是出现:Nothing to be done for  'default'.
如果去掉
default:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules还是出错!!这到底是怎么回事啊。


各位老大,小弟初学习驱动。懂得少,所以不怕老大们BS——只要能解决问题就行,我是真地想学啊!!

TOP



各位老大这是hello.c的源码
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void) {
     printk(KERN_ALERT "Hello, world\n");
     return 0;
}

static void hello_exit(void) {
     printk(KERN_ALERT "Goodbye, cruel world\n");
}

module_init(hello_init);
module_exit(hello_exit);

TOP



各位老大这是hello.c的源码
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void) {
     printk(KERN_ALERT "Hello, world\n");
     return 0;
}

static void hello_exit(void) {
     printk(KERN_ALERT "Goodbye, cruel world\n");
}

module_init(hello_init);
module_exit(hello_exit);

TOP

内核为2.6.18

TOP

发新话题