"); //-->
我也照着上面的方法试着做了。
环境:radhet9(文本模式下) gcc(3.2.2)
试验1
#define MODULE
#includes<linux/module.h>
int init_module(void)
{
printk("<1>Hello,world\n");
return 0;
}
void cleanup_module(void)
{
printk("<1>Googbye crule world\n");
}
编译:
gcc -I /usr/scr/linux-2.4/include/linux -Wall -c hello.c
结果:
hello.c: In function 'init_module':
hello.c:11: warning: implicit declaration
of function 'printk'
没有理会警告继续:
insmod hello.o
警告:
版本不匹配,继续:
insmod -f hello.o
还是警告,但同时也输出了“Hello,world”,说明模块加载成功。
rmmod hello
显示:
Googbye crule world
试验2
在上面的文件中加入
#includ<linux/kernel.h>
MODULE_LICENSE("GPL");
然后重新编译
gcc -I /usr/scr/linux-2.4/include/linux -Wall -c hello.c
出现了同样的警告。我不是已经加了printk的声明了?怎么还有警告?
继续试验一得步骤:
出现的结果完全一样。
试验3
同实验2的文件。
编译命令为:
gcc -D__KERNEL__ -DMODULE -I /usr/src/linux-2.4/include -Wall -c hello.c
没有任何的警告。
加载,卸载也没有任何的警告。
原因:头文件的路径设置错误。
在头文件路径正确的情况下,去掉#inclue<kernel.h>,将会出现printk的警告。
去掉MODULE_LICENSE("GPL"),在加载时会出没有注册的警告。
试验4
没有任何警告和错误的文件,以及编译方法。
#define MODULE
#includes<linux/module.h>
#includes<linux/kernel.h>
MODULE_LICENSE("GPL");
int init_module(void)
{
printk("<1>Hello,world\n");
return 0;
}
void cleanup_module(void)
{
printk("<1>Googbye crule world\n");
}
编译,加载,卸载命令:
gcc -D__KERNEL__ -DMODULE -I /usr/src/linux-2.4/include -Wall -c hello.c
再提一下,我是在文本模式下进行的实验。
学习中......
补充:
其实到2.4内核,设备的加载和卸载使用这两个函数:
module_init("设备初始化函数");
module_exitJ("设备卸载函数");
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
555构成间接反馈型无稳态自激多谐振荡器电路
基于Atmega103微控制器的家庭信息终端的设计
嵌入式系统考试的模拟试题,还有谁知道考试费
从历史数据分析英特尔该如何摆脱困境
基于C6000系列DSP的MPEG-4编码器实现
半导体公司已经占标准普尔500指数总市值的12.1%
纳芯微发布闭环磁通门信号调节芯片NSDRV401
NEC Electronics C编译器软件安装演示视频
美光是AI存储领域下一个大赢家吗?分析师认为是的,但风险仍然存在
必看
555构成两种双稳态电路
用于高频测量的分流电阻串联电感补偿
研究人员概述了跟踪先进半导体中热量的创新方法
必看
超导电机可以推动电动飞机
中国在超高度并行光计算集成芯片方面取得突破
纳芯微汽车前灯照明解决方案——重磅新品三连发!
NEC Electronics Applilet 软件安装演示视频
东京电子预计受美收紧出口影响,中国市场销量将下降到 30%
基于C504单片机的变频调速系统
Water Activated Alarm
NEC Electronics SM+软件安装演示视频
555构成两种单稳态电路
555时基电路构成的脉宽调制电路
外接的SRAM问题
LinkSwitch-II
基于AT90S8515单片机的瞬变信号捕获与存储器
NEC Electronics 汇编器与PM+软件安装演示视频
基于ADμC812单片机的智能无功补偿控制器的研制
外接的SRAM问题