第一个driver~~~

网上已经看到过n遍的linux2.6驱动hello world程序,终于忍不住要自己实现一遍了。

在做之前就看了半天,据说是2.6的内核比用用make来编译,暂不知道为什么,先跟着做,然后动手改。

 

看到别人发的hello.c和Makefile

 

复制代码
/* hello.c */
#include 
<linux/init.h>
#include 
<linux/module.h>
#include 
<linux/kernel.h>

static int hello_init(void)
{
                    printk(KERN_ALERT 
"Hello, world\n");
                                    
return 0;
}
static void hello_exit(void)
{
                    printk(KERN_ALERT 
"Goodbye, hello\n");
}
module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE(
"GPL");

复制代码

 

 

复制代码
# Makefile2.6
ifneq ($(KERNELRELEASE),)
#kbuild syntax. dependency relationshsip of files and target modules are listed here.
        mymodule-objs := hello.o
        obj
-m := hello.o
else
        PWD :
= $(shell pwd)
        KVER 
?= $(shell uname -r)
        KDIR :
= /lib/modules/$(KVER)/build
all:
        
$(MAKE) -$(KDIR) M=$(PWD)
clean:
        rm 
-rf .*.cmd *.o *.mod.c *.ko .tmp_versions
endif

复制代码

 

执行make。。。出现了错误提示:

/lib/modules/2.6.18-1.2798.fc6xen/build 文件或文件夹不存在

然后执行:

ls -l /lib/modules/2.6.18-1.2798.fc6xen/build

看到:

lrwxrwxrwx 1 root root 40 06-22 10:34 build -> /usr/src/kernels/2.6.18-1.2798.fc6-i686/

不知道为什么,build到行尾一直都在闪,但是看到它只是一个软链接,看样子是什么原因链接失效了,所以,把原来的链接删了重新建了一个链接:

cd /lib/modules/2.6.18-1.2798.fc6xen/

rm build

ln -s /usr/src/kernels/2.6.18-1.2798.fc6xen ./build

然后再切换回去make。。。make ok!

但是执行insmod hello.ko时又出现了问题:

[root@global Character]# insmod hello.ko
insmod: error inserting 'hello.ko': -1 Invalid module format

通过uname -a,cat /proc/version, gcc -v...之后发现gcc,内核版本都没有问题,可奇怪死了。。。google中,呵呵~~~

找了半天,貌似是与内核版本不一致造成的。也下不到2.6.18-1.2798.fc6xen的dev-tools,所以,我又把它拿到了fdaro8下面进行编译,一切ok~~~

换内核是个挺麻烦的事,会牵扯到很多东西。现在是学驱动,所以,其它的先放置,选困扰最好的方式来学习,目标才最明确。

posted @   Biiigfish  阅读(335)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示