linux 为什么找不到.ko的文件
hello.c的文件编写#include<linux/module.h>
#include<linux/init.h>
static int__init initalization_function(void) // chu shi hua
{
printk("kernel init over!!!!\n");
return 0;// init successfull
}
module_init(initalization _function);
static void __exit cleanup_function(void)
{
printk(" xie zai wan bi\n");
}
module_exit(cleanup_function);
MOUDLE_LICENSE("GPL");
~
makefile的文件编写
为
ifeq ($(KERNELRELEASR),)
KERNELDIR?=/lib/modules/$(shell uname -r)/build
PWD:=$(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o
else
obj-m:=hello.o
endif
~
结果make一下就是:
make
make -C /lib/modules/3.2.0-23-generic-pae/build M=/home/chaolei/helloD modules
make: Entering directory `/usr/src/linux-headers-3.2.0-23-generic-pae'
Building modules, stage 2.
MODPOST 0 modules
make: Leaving directory `/usr/src/linux-headers-3.2.0-23-generic-pae'
root@ubuntu:/home/chaolei/helloD# ls
hello.cMakefilemodules.orderModule.symvers
为什么找不到hello.ko的文件!!!
求大神指教!!!俺是入门的新手!!!
编译放到内核源码中,修改kconfig和Makefile 进行编译。自己写Makefile比较麻烦,而且事情比较多。。。 首先你的Makefile没有指定编译工具,没有指定架构,如果不是交叉编译,使用默认的话,编译的 时候
make的默认的是all,也应该执行Make module来编译 ifneq ($(KERNELRELEASE),)
obj-m := memdev.o
else
KDIR := /home/guoqian/4-3-1/linux-2.6.29
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symversmodul*
endif
试一下这个makefile,一直在用,要修改的是memdev.o改为相应的名字,KDIR:指向你的内核树,CROSS_COMPILE赋值为你的交叉编译链
页:
[1]