当前位置: 技术问答>linux和unix
简单模块程序,但是make不过去,请大家帮忙解决,谢谢!
来源: 互联网 发布时间:2016-02-20
本文导语: 在linux下按书上编写了一个简单模块程序,但是make不过去,请大家帮忙解决,谢谢! 程序hello.c: #include static int count; static char *string; MODULE_PARM(count, "I"); MODULE_PARM(string, "S"); int init_module(void) { printk("hello,...
在linux下按书上编写了一个简单模块程序,但是make不过去,请大家帮忙解决,谢谢!
程序hello.c:
#include
static int count;
static char *string;
MODULE_PARM(count, "I");
MODULE_PARM(string, "S");
int init_module(void)
{
printk("hello, I am the kernel module, n");
printk("count->%d,n", count);
printk("string->%s, n", string);
return 0;
}
void cleanup_module(void)
{
printk("Goodby,n");
}
Makefile文件为
DFLAGS = -D__KERNEL__ -DMODULE
CFLAGS = -O2 -g -Wall -Wstrict-prototypes -pipe -l/usr/include/linux/
hello.o:hello.c
gcc -c hello.c $(DFLAGS) $(CFLAGS) -o hello.o
clean:
rm -f *.o
make提示为:
Makefile:5: *** 遗漏分隔符 。 停止。
上面是倪继利老师书上的程序,为什么通不过???
程序hello.c:
#include
static int count;
static char *string;
MODULE_PARM(count, "I");
MODULE_PARM(string, "S");
int init_module(void)
{
printk("hello, I am the kernel module, n");
printk("count->%d,n", count);
printk("string->%s, n", string);
return 0;
}
void cleanup_module(void)
{
printk("Goodby,n");
}
Makefile文件为
DFLAGS = -D__KERNEL__ -DMODULE
CFLAGS = -O2 -g -Wall -Wstrict-prototypes -pipe -l/usr/include/linux/
hello.o:hello.c
gcc -c hello.c $(DFLAGS) $(CFLAGS) -o hello.o
clean:
rm -f *.o
make提示为:
Makefile:5: *** 遗漏分隔符 。 停止。
上面是倪继利老师书上的程序,为什么通不过???
|
看提示是Makefile错误,注意观察Makefile第5行
gcc -c hello.c $(DFLAGS) $(CFLAGS) -o hello.o
gcc前面估计是几个空格,改成一个tab键,第7行的rm前面同理
gcc -c hello.c $(DFLAGS) $(CFLAGS) -o hello.o
gcc前面估计是几个空格,改成一个tab键,第7行的rm前面同理
|
你的那个Makefile是在早些kernel版本的写法,FC5已经不是这样的了
大概应该是这样:
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
大概应该是这样:
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
|
把 gcc 前的空格删掉, 然后用 Tab
|
应该是没有正确包含linux内核的头文件
|
#include
#include
#include