<span id='u1dk'></span>
        <ins id='u1dk'></ins>
      1. <fieldset id='u1dk'></fieldset>

        <code id='u1dk'><strong id='u1dk'></strong></code>
        <i id='u1dk'><div id='u1dk'><ins id='u1dk'></ins></div></i>

        1. <tr id='u1dk'><strong id='u1dk'></strong><small id='u1dk'></small><button id='u1dk'></button><li id='u1dk'><noscript id='u1dk'><big id='u1dk'></big><dt id='u1dk'></dt></noscript></li></tr><ol id='u1dk'><table id='u1dk'><blockquote id='u1dk'><tbody id='u1dk'></tbody></blockquote></table></ol><u id='u1dk'></u><kbd id='u1dk'><kbd id='u1dk'></kbd></kbd>
        2. <dl id='u1dk'></dl>

          <i id='u1dk'></i>

        3. <acronym id='u1dk'><em id='u1dk'></em><td id='u1dk'><div id='u1dk'></div></td></acronym><address id='u1dk'><big id='u1dk'><big id='u1dk'></big><legend id='u1dk'></legend></big></address>

        4. 如何成为一个Linux系统内核开发者

          • 时间:
          • 浏览:9
          • 来源:124软件资讯网

            你想成知道怎样成为一个Linux内核开发者么  ?或者你的老板告诉你  ,“去为这个装备写一个Linux驱动  。“这篇文档的目的  ,就是通过形貌你需要履历的历程和提醒你怎样和社区一起事情  ,来教给你为到达这些目的所需要知道的所有知识  。本文也实验诠释社区为什么这样事情的一些缘故原由 。

            内核险些全是用C写成的  ,有一些架构相关的部门是用汇编语言写成的 。熟练掌握C语言是内核开发的必备条件  。汇编语言(任何架构)的相识不是必须的 ,除非你准备做某个架构的底层开发 。虽然下面这些书不能完全取代扎实的C语言教学和/或者成年累月的履历  ,他们照旧不错的参考  ,若是用得着的话: - "The C Programming Language" 作者: Kernighan and Ritchie [Prentice Hall]- "Practical C Programming" 作者: Steve Oualline [O'Reilly]

            内核是用 GNU C 和 GNU 工具链写成的  。虽然它切合 ISO C89 尺度  ,它照旧使用了一些尺度中没有的扩展  。内核是自成系统的 C 情况 ,它并不依赖尺度C库  ,以是某些C语言尺度是不支持的 。恣意长度long long类型除法和浮点数是不被允许的 。有时间会很难明白内核对于它所使用的工具链和扩展的假定  ,而且不幸的是也没有关于它们的绝对的参考  。请查阅gcc 的info页(`info gcc`)以获取有关信息 。

            请记着你是在实验学习怎样与已经存在的开发社区一起事情 。这是一群身分庞大的人们  ,他们对于代码  ,气势派头和步骤有高的尺度  。这些尺度是经由时间磨练的  。

            他们发现遵照这些尺度对于这样一个大规模的且地理上疏散的团队是最佳的选择 。实验提前学习尽可能多的有关这些尺度的知识  ,由于它们都有很好的文档;不要期望别人会遵照你或者你公司的行事方式  。

            执法问题

            Linux内核源代码遵照GPL公布 。请参考源代码树下的COPYING文件  ,以获取有关这个允许证的详细信息  。若是你对这个允许证有疑问  ,请联系你的状师 ,不要在Linux内核邮件列内外询问  。邮件列内外的人们不是状师  ,你不应该依赖于他们对于执法问题的诠释 。

            文档

            Linux内核源代码树有许多文档 ,它们对于学习怎样与内核社区交流来说有不行估量的价值  。当新的功效加进内核的时间  ,通常建议作者把诠释这个新功效的文档也加进内核 。若是一个内核变更导致了内核对用户空间界面的改变 ,建议你把这个信息或者一个诠释了这个变更的manpage的补丁发送给手册页的维护者 mtk-manpages@gmx.net  。

            这里有一个内核源代码树里需要阅读的文件列表:

            README

            这个文件简朴先容了Linux内核的配景 ,并形貌了设置和编译内核需要做哪些事情 。内核新手应该从这里最先  。

            Do*****entation/Changes

            这个文件先容了乐成编译和运行内核所需要种种差别软件的列表  。

            Do*****entation/CodingStyle

            这个文件形貌了Linux内核代码气势派头  ,另有背后的一些缘故原由  。所有的新代码的要切合这个文档里的准则  。大多数维护者只会接受切合这些规则的补丁  ,许多人只看切合准确气势派头的代码 。

            Do*****entation/SubmittingPatches

            Do*****entation/SubmittingDrivers

            这些文件很是详细的先容了怎样乐成的建立和发送一个补丁  ,包罗(但不限于):

            -Email内容

            -Email花样

            -发送给谁

            遵守所有这些规则并不能保证乐成(对所有的补丁都需要举行内容和气势派头的详细检查)  ,可是不遵守这些规则就一定不会乐成 。

            其他关于怎样建立补丁的很好的文章有:

            “The Perfect Patch"

            linux/patches/stuff/tpp.txt">www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt

            "Linux kernle patch submission format"

            linux.yyz.us/patch-format.html

            Do*****entation/stable_api_nonsense.txt

            这个文件诠释了有意识的决议-不在内核里使用稳固的API-的缘故原由 ,包罗:

            -子系统分开层(为了兼容  ?)

            -操作系统之间的驱动可移植性

            -缓和(或者阻止)内核源代码树的急速变更

            这个文档对于相识Linux的开发哲学是很是要害的  ,对于由开发其他操作系统转而开发Linux人也是很主要的 。

            Do*****entation/SecurityBugs

            若是你感受到你发现了Linux内核里的一个宁静问题 ,请遵照这个文档里所形貌的步骤来提醒内核开发者  ,并资助解决问题  。

            Do*****entation/ManagementStyle

            12下一页