- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
makefile_Kconfig(一)
在内核中新增驱动代码目录 分类:Linux内核/驱动2012-08-05 21:08408人阅读评论(0)收藏举报makefileextlinux内核linuxuser工作目录(?)[+]如果学习Linux下驱动开发那么本文所述的在内核中新增驱动代码目录应该是一个最基本的知识点了那么如何将自己写好的驱动程序新增到内核本文将一步一步的教会你在正式开始之前请先切换到root用户su root不过可能会会出现问题不管你输入什么密码都会提示你错误很可能是因为之前你根本未设置过密码这时候我们来修改root用户的密码如果学习Linux下驱动开发,那么本文所述的“在内核中新增驱动代码目录”应该是一个最基本的知识点了。那么如何将自己写好的驱动程序新增到内核?本文将一步一步的教会你。1.在正式开始之前,请先切换到root用户:su root。不过可能会会出现问题:不管你输入什么密码,都会提示你错误(很可能是因为之前你根本未设置过密码)。这时候我们来修改root用户的密码:1sudopasswd root输入两次后,即可修改完毕,这下再su root就可以成功切换到root用户。2.你可以现在试着在终端输入make menuconfig,终端会提示你:make: *** 没有规则可以创建目标“menuconfig”。这是因为menuconfig涉及到图形界面,所以我们得安装一些依赖包(ubuntu下):sudo apt-get install libncurses5-dev。3.在一般的教程中,都会提到.config文件,而且这个文件就位于内核代码的根目录下。因此我会输入命令:ls -a来寻找.config。可是找来找去都没有这个文件的踪影。这是为什么?这是因为在这之前,你从来没有进行过内核配置,所以当然就不会生成.config文件了。解决的方法也很简单,有了上面两步的准备工作,那么你应该会成功进入配置用户界面,然后什么也不做,保存退出即可。那么你再ls一下,你可以发现.config已经存在了。在开始向加入驱动代码之前,我们先了解三项基本步骤:(1)将编好的源代码复制到Linux内核源代码的相应目录(2)在目录的Kconfig文件中增加新源代码对应项目的编译配置选项(3)在目录的Makefile文件中增加对新源代码的编译条目在完成上述三项工作之前,我们先看一下我们要新增的驱动的树形结构。比如我们写的驱动程序均放在edsionteDriver目录,在此目录中包含Kconfig,Makefile和test.c三个文件,以及Key和led两个目录。我们先提前创建好这些文件,请注意本文只是为了演示说明,如果实际应用,像key,led以及test.c这样的文件都是有实际意义的。那么现在复制到内核源码目录下的driver/目录下即可。|– edsionteDriver| ? ?|– Kconfig| ? ?|– Makefile| ? ?|– key| ? ? ? ?|– Kconfig| ? ? ? ?|– Makefile| ? ? ? ?|– mykey.c| ? ?|– mydriver.c|?? ?|– mydriver_user.c现在我们完成了第一步工作,你应该注意到,我们现在只是创建了各个目录下的Kconfig和Makefile文件,并没添加相关内容,所以接下来我们就来进行这两个文件的编写。对于初学者来说,直接学习Makefile以及Kconfig的编写可能会有些眩晕甚至排斥学习,不过我们可以先了解这两个文件在实际的内核分析中有什么作用。一般来说,对于内核这个庞大的网络,想要快速定位你所关心的代码就需要首先分析某个目录下的Makefile以及Kconfig文件,它们可是我们分析内核代码的goole map。比如我们要分析ext3类型的文件系统,那么我们进入源码目录下fs/ext3/目录中,我们打开此目录的Makefile文件:011 #02?2 # Makefile?for?the linux ext3-filesystem routines.03?3 #04?405?5 obj-$(CONFIG_EXT3_FS) += ext3.o06?607?7 ext3-y? := balloc.obitmap.odir.ofile.ofsync.oialloc.oinode.o \08?8??????????? ioctl.onamei.osuper.osymlink.ohash.oresize.o ext3_jbd.o09?91010 ext3-$(CONFIG_EXT3_FS_XATTR)???? += xattr.oxattr_user.oxattr_trusted.o1111 ext3-$(CONFIG_EXT3_FS_POSIX_ACL)
文档评论(0)