当前位置: 技术问答>linux和unix
简单问题(80分)
来源: 互联网 发布时间:2015-02-16
本文导语: //hello.c #ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include #include int init_module() { printk("Hello. linux!n"); return 0; } void clean_module() { printk("Bye-bye, linux!n"); } //Makefile CC = gcc CFL...
//hello.c
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include
#include
int init_module()
{
printk("Hello. linux!n");
return 0;
}
void clean_module()
{
printk("Bye-bye, linux!n");
}
//Makefile
CC = gcc
CFLAGS = -D__KERNEL__ -DMODULE -Wall
hello.o: hello.c /usr/include/linux/version.h
$(CC) $(CFLAGS) -c hello.c
上面的程序在linux7.2(kernel-2.4.10)下能编译通过,没有任何提示,
但用insmod和rmmod是没有任何显示
上面的程序在linux8.0(kernel-2.4.18)下能编译通过,提示warning,
"...: implicit declaration of fuction 'printk'"
Why???
Why???
Why???
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include
#include
int init_module()
{
printk("Hello. linux!n");
return 0;
}
void clean_module()
{
printk("Bye-bye, linux!n");
}
//Makefile
CC = gcc
CFLAGS = -D__KERNEL__ -DMODULE -Wall
hello.o: hello.c /usr/include/linux/version.h
$(CC) $(CFLAGS) -c hello.c
上面的程序在linux7.2(kernel-2.4.10)下能编译通过,没有任何提示,
但用insmod和rmmod是没有任何显示
上面的程序在linux8.0(kernel-2.4.18)下能编译通过,提示warning,
"...: implicit declaration of fuction 'printk'"
Why???
Why???
Why???
|
你那样使用printk在rh7.2中是什么消息都看不到的,但是你可以查看/var/log/message文件,它被大引导该文件中,正确使用方法是
printk(" ...", ....) n表示 1,2,3,4,5,6,7,级别从高到底
看看linux/kernel.h文件中的定义
printk(" ...", ....) n表示 1,2,3,4,5,6,7,级别从高到底
看看linux/kernel.h文件中的定义
|
因为 printk 在你指定的头文件里面没有声明,你可以查以下 该函数是在那个文件中声明的,然后包含之,就行了。
|
printk是在定义的阿,快速参考里这么说的
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。