免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2150 | 回复: 0

linux驱动入门实验 [复制链接]

论坛徽章:
0
发表于 2009-05-04 08:52 |显示全部楼层

/***********************************
*帅得不敢出门   
*C++爱好者灌水天堂   3503799
*转载请保留此信息
**********************************/
由于没有开发板,只好做pc机下linux的模块加载了.原理与开发板的是一样的.
编写dri_arh.c源代码
#include
#include
#include
#include
#include
static int __init dri_arch_init_module(void)
{
printk("This is a simple driver-module!\r\n");
return 0;
}
static void __exit dri_arch_cleanup_module(void)
{

printk("Goodbye driver-module!\r\n");
}
module_init(dri_arch_init_module);
module_exit(dri_arch_cleanup_module);

然后编译,我就不写Makefile了 直接命令编译它
[root@localhost 0430]# gcc -D__KERNEL__ -DMODULE -Wall -c -O2 -o dri_arch.o
dri_arch.c
In file included from dri_arch.c:1:
/usr/include/linux/string.h:8:2: warning: #warning Using kernel header in
userland!
dri_arch.c: In function `dri_arch_init_module':
dri_arch.c:9: warning: implicit declaration of function `printk'
出现错误了,头文件把它包含进去就行了
[root@localhost 0430]# gcc -D__KERNEL__ -DMODULE -Wall
-I/usr/src/linux-2.4.20-8/include  -c -O2 -o dri_arch.o
dri_arch.c
生成了.o文件了.  加载到内核中去(原先我加载过了,先rmmod把它卸载掉)
[root@localhost 0430]# insmod dri_arch.o
dri_arch.o: kernel-module version mismatch
        dri_arch.o was compiled for kernel version 2.4.20-8custom
        while this kernel is version 2.4.20-8.
发现出现系统模块版本不匹配
于是make menuconfig
make
编译内核,再重新编译模块,并加载,还是不行,只好修改/usr/src/linux-2.4.20-8/include/linux/versions.h
其原先内容如下:
#define UTS_RELEASE "2.4.20-8custom"
#define LINUX_VERSION_CODE 132116
#define KERNEL_VERSION(a,b,c) (((a)

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/64540/showart_1917366.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP