linux2.6内核下的设备驱动程序开发的编译方法

linux2.6内核下的设备驱动程序开发的编译方法

ID:6056856

大小:44.50 KB

页数:9页

时间:2018-01-01

linux2.6内核下的设备驱动程序开发的编译方法_第1页
linux2.6内核下的设备驱动程序开发的编译方法_第2页
linux2.6内核下的设备驱动程序开发的编译方法_第3页
linux2.6内核下的设备驱动程序开发的编译方法_第4页
linux2.6内核下的设备驱动程序开发的编译方法_第5页
资源描述:

《linux2.6内核下的设备驱动程序开发的编译方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、05年本科毕业设计做的是Linux下驱动的剖析,当时就买了一本《Linux设备驱动程序(第二版)》,但是没有实现将最简单的helloworld程序编译成模块,加载到kernel里。不过,现在自己确实打算做一款芯片的Linux的驱动,因此,又开始看了《Linux设备驱动程序》这本书,不过已经是第三版了。第二版讲的是2.4的内核,第三版讲的是2.6的内核。两个内核版本之间关于编译内核以及加载模块的方法都有所变化。本文是基于2.6的内核,也建议各位可以先看一下《Linux内核设计与实现(第二版)》作为一个基础知识的铺垫。当然,从实践角度来看,只要按着以下的步骤

2、去做也应该可以实现成功编译内核及加载模块。个人用的Linux版本为:DebianGNU/Linux,内核版本为:2.6.20-1-686.第一步,下载Linux内核的源代码,即构建LDD3(LinuxDeviceDrivers3rd)上面所说的内核树。如过安装的Linux系统中已经自带了源代码的话,应该在/usr/src目录下。如果该目录为空的话,则需要自己手动下载源代码。下载代码的方法和链接很多,也可以在CU上通过http://download.chinaunix.net/search/?key=&;q=kernel&frmid=53去下载。不过,下载

3、的内核版本最好和所运行的Linux系统的内核版本一致。当然,也可以比Linux系统内核的版本低,但高的话应该不行(个人尚未实践)。Debian下可以很方便的通过Debian源下载:首先查找一下可下载的内核源代码:#apt-cachesearchlinux-source其中显示的有:linux-source-2.6.20,没有和我的内核版本完全匹配,不过也没关系,直接下载就可以了:#apt-getinstalllinux-source-2.6.20下载完成后,安装在/usr/src下,文件名为:linux-source-2.6.20.tar.bz2,是一个

4、压缩包,解压缩既可以得到整个内核的源代码:#tarjxvflinux-source-2.6.20.tar.bz2解压后生成一个新的目录/usr/src/linux--source-2.6.20,所有的源代码都在该目录下。注:该目录会因内核版本的不同而不同,各位动手实践的朋友只需知道自己的源代码所在的具体位置即可。第二步:配置及编译内核。进入/usr/src/linux--source-2.6.20目录下,可以看到Makefile文件,它包含了整个内核树编译信息。该文件最上面四行是关于内核版本的信息。对于整个Makefile可以不用做修改,采用默认的就可以

5、了。一般情况下,需要先用命令诸如"makemenuconfig","makexconfig"或者"makeoldcofig"对内核进行配置,这几个都是对内核进行配置的命令,只是它们运行的环境不一样,执行一下这几个命令中的任何一个即可对内核进行配置:makemenuconfig是基于界面的内核配置方法,makexconfig应该是基于QT库的,还有makegcofig也是基于图形的配置方法,应该是需要GTK的环境,makeoldcofig就是对内核树原有的.config文件进行配置一下即可。其实内核的配置部分,主要是保证内核启动模块可动态加载的配置,默认配

6、置里面应该已经包含了这样的内容,因此,我用的是makeoldconfig.内核的详细配置请见另外一位网友的帖子,这里给出链接:http://linux.chinaunix.net/bbs/viewthread.php?tid=885597&extra=page%3D1%26amp%3Bfilter%3Ddigest在内核源码的目录下执行:#make#makebzImage其中,第一个make也可以不执行,直接makebzImage。这个过程可能要持续一个小时左右,因此是对整个内核重新编译了。执行结束后,可以看到在当前目录下生成了一个新的文件:vmlinu

7、x,其属性为-rwxr-xr-x。然后执行:#makemodules#makemodules_install对内核的所有模块进行编译和安装。执行结束之后,会在/lib/modules下生成新的目录/lib/modules/2.6.20/。在随后的编译模块文件时,要用到这个路径下的build目录。至此,内核编译完成。可以重启一下系统。第三步:编写模块文件及Makefile以LDD3上的hello.c为例://hello.c#include#includeMODULE_LICENSE("DualBSD/GPL");staticinthello_init(vo

8、id){printk(KERN_ALERT"Hello,world");re

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。