当前位置: 技术问答>linux和unix
设备模块注册时的一个小错误,大家来看看。
来源: 互联网 发布时间:2015-10-12
本文导语: 最近开始学习内核模块编程,今天编写了一段小程序 #include #include int init_module() { printk("Hello! This is a testing module! n"); return 0; } void cl...
最近开始学习内核模块编程,今天编写了一段小程序
#include
#include
int init_module()
{
printk("Hello! This is a testing module! n");
return 0;
}
void cleanup_module()
{
printk("Sorry! The testing module is unloading now! n");
}
但我使用# gcc –O2 –g –Wall –DMODULE –D __KERNEL__ -c -I /usr/src/linux-2.4.20-8/include/ testmodule.c 命令进行编译后虽然也生成了testmodule.o文件,但却有一些警告信息:
warning:implicit declaration of function 'printk_R1b7d4074'
为什么啊,难道printk用错了么?
#include
#include
int init_module()
{
printk("Hello! This is a testing module! n");
return 0;
}
void cleanup_module()
{
printk("Sorry! The testing module is unloading now! n");
}
但我使用# gcc –O2 –g –Wall –DMODULE –D __KERNEL__ -c -I /usr/src/linux-2.4.20-8/include/ testmodule.c 命令进行编译后虽然也生成了testmodule.o文件,但却有一些警告信息:
warning:implicit declaration of function 'printk_R1b7d4074'
为什么啊,难道printk用错了么?
|
printk写系统日志,当日志级别小于控制台的话就不会显示,可以用dmesg命令查看打印结果。
至于你的warning,是指没有license 可以在代码中加入
MODULE_LICENSE("Dual BSD/GPL");
另外建议,直接学习2.6内核下的开发,2.6比2.4改变相当大。
至于你的warning,是指没有license 可以在代码中加入
MODULE_LICENSE("Dual BSD/GPL");
另外建议,直接学习2.6内核下的开发,2.6比2.4改变相当大。
|
MODULE_LICENSE("GPL");消除告警