求LDD3"hello world"问题!
刚学这些,菜鸟.按照书上的写法,编写hello world那个程序时,编译老是不通过,make的时候总提示 :make: Nothing to be done for `modules'.
linux 版本是 SUSE LINUX 2.6的
##########makefile#########33
KERNEL_SRC=/usr/src/linux-2.6.16.21-0.8/
PWD :=$(shell pwd)
obj-m := hello.o
modules:
$(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules
clean:
#rm -rf *.ko
#rm -rf *.o
#rm -rf *.mod.c
################################
##########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)
{
prink(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
################################
[ 本帖最后由 lqq_1229 于 2008-10-24 11:10 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
$(MAKE) -C $(KERNEL_SRC) M=$(PWD)加个空格modules
请看看这篇帖子:
http://linux.chinaunix.net/bbs/thread-1018990-1-2.html
那个之间已经加了 空格了,但是还是一样的
其实你不用搞的这么复杂,其实那个文件是要有两次make的,一次是你敲的,一次是文件中的那个 $(make)
简单方法:
Makefile中 obj-m := hello.o
在当前目录下输入:
make -C /usr/src/linux(根据你的linux代码书更改) M=`pwd` modules
就好了
modules:
$(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules
改为:
modules:
$(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules
加Tab
这个不知道是他贴代码的时候的问题呢,还是真么写好的问题,哈哈。
Makefile中,规则后面的命令必须以Tab开头。否则make不认的。自然也找不到应该执行的动作。所以才会出现:
make: Nothing to be done for `modules'.
版主正解,呵呵