当前位置:  技术问答>linux和unix

请教编译内核模板时的问题

    来源: 互联网  发布时间:2017-04-27

    本文导语:  我的程序很简单: hello.c #include  #include  #include  MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(" Hello world!n"); return 0; } static void hello_exit(void) { printk(" Bye, cruel worldn"); } module_init(hello_init); module_exit(hello_...

我的程序很简单:
hello.c
#include 
#include 
#include 
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void) {
printk(" Hello world!n");
return 0;
}
static void hello_exit(void) {
printk(" Bye, cruel worldn");
}
module_init(hello_init);
module_exit(hello_exit);

我的makefile文件:
obj-m := hello.o
KDIR  := /lib/modules/$(shell uname -r)/build 
PWD := $(shell pwd)
default:     
        $(MAKE) -C $(KDIR) M=$(PWD) modules
可是编译时出现:
make -C /lib/modeles/2.6.18-308.13.1.e15/build M=/home/leetow/ltc
make[1]:Entering direcrory '/usr/src/kernels/2.6.18-308.13.1.e15-i686'
  Building modules,stage 2.
  MODPOST
make[1]:Leaving direcrory '/usr/src/kernels/2.6.18-308.13.1.e15-i686'
而且我也没有发现生成的hello.ko等文件(我是root登陆的),请问错在哪了?

|
一般都是这么写:

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

|
内核版本太旧的话,确实得按1楼的makefile跑

|
ifneq ($(KERNELRELEASE),)
如果$(KERNELRELEASE)这个值不为空

?= 如果KERNELDIR 为空值,就赋?=之后的值,如果不为空值,就不给它赋值

|

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,