+ -
当前位置:首页 → 问答吧 → 模块编译的makefile问题

模块编译的makefile问题

时间:2010-07-05

来源:互联网

hi all
代码:
/*
*   Hello world module.
*/

#include <linux/init.h>
#include <linux/module.h>

MODULE_LICENSE("Dule BSD/GPL");


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

static void hello_exit(void)
{
   printk(KERN_ALERT "Good-bye, kernel!\n");
}   

module_init(hello_init);
module_exit(hello_exit);


代码:
/* makefile */
obj-m := hello.o


when I compile this modules ,it appears this problems.
make -C /usr/src/linux-headers-$(uname -r) M=$(pwd) modules
make: Entering directory `/usr/src/linux-headers-2.6.32-23-generic'
make: *** No rule to make target `linux'. Stop.
make: Leaving directory `/usr/src/linux-headers-2.6.32-23-generic'

any body has some idea to solve it?
thanks advance !

作者: zztczcx   发布时间: 2010-07-05

我也是个初学者,不知道你的问题出在哪里。

不过我用的 Makefile 没啥问题,你可以参考一下。运行时只需要执行 make 即可。


# Makefile2.6

ifneq ($(KERNELRELEASE),)

#kbuild syntax. dependency relationshsip of files and target modules are listed here.

obj-m := hello.o

else

PWD := $(shell pwd)
KDIR := /usr/src/linux-source-2.6.28


all:
$(MAKE) -C $(KDIR) M=$(PWD) modules

clean:
rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions Module.* modules.*

endif

作者: linjiework   发布时间: 2010-07-06

obj-m +=hello.o

kernel=/usr/src/kernels/2.6.18-164.el5-i686 (这个是你所要加在模块的源代码路径)


make -C $(kernel) M=`pwd` modules

作者: YT11   发布时间: 2010-08-18

是你的Makefile有问题

作者: YT11   发布时间: 2010-08-19