请问如何下载linux-kbuild,以解决安装linux内核开发怎样入门头部问题

不要用空格来缩进 (除了注释或文檔)

02 - 代码行长度控制在80个字符以内

03 - 括号和空格的位置

只有一行的语句块不用大括号

如果if用了大括号, 那么else即使只有一行也要用大括号

定义指针時, * 紧靠函数名或者变量名

下面的二元和三元操作符左右要留一个空格

下面的一元操作符后面 *不要* 留空格

后缀操作符(++ --)前面不要留空格

前缀操莋符(++ --)后面不要留空格

结构体成员操作符(. ->)前后都不要留空格

每行代码之后不要有多余的空格

局部变量名称要简洁(这个规则比较抽象, 只能多看看linux内核开发怎样入门代码中其他人的命名方式)

  (3)怎样连接这些文件最重要的是咜们的顺序如何

  顶层Makefile:它是所有Makefile文件的核心,从总体上控制着linux内核开发怎样入门的编译、

目录及各级子目录)都是根据.config来决定使用哪些文件

构相关的文件参与linux内核开发怎样入门的生成并提供一些规则来生成

根据Makefile的作用分析这5类文件

  Linuxlinux内核开发怎样入门的编译过程从顶层Makefile开始,然后递归地进入各级子目录调用它们的Makefile分为3个步骤:

   顶层Makefile决定linux内核开发怎样入门根目录下哪些子目录将被编译进linux内核开发怎样入门

   各級子目录下的Makefile决定所在目录下哪些文件将被编译进linux内核开发怎样入门,哪

obj-y中定义的.o文件由当前目录下的.c.S文件编译生成

obj-m中定义的.o文件由當前目录下的.c.S文件编译生成,

liy-y中定义的.o文件由当前目录下的.c.S文件编译生成,

怎样编译这些文件----编译选项、连接选项是什么

  怎样连接这些攵件它们的顺序如何

   要连接进linux内核开发怎样入门的文件,如下所示:

(1)配置文件.config中定义了一系列的变量Makefile将结合它们来决定哪些

   文件被编譯进linux内核开发怎样入门、哪些文件被编译成模块、涉及哪些子目录

(3)各级子目录下的Makefile决定所在目录下的哪些文件将被编译进linux内核开发怎样入門,哪些

   文件被编译成模块(即驱动程序)进入哪些子目录继续调用它们的Makefile

(5)各级子目录下的Makefile中可以设置影响当前目录下所有文件的编译、连接

加载中,请稍候......

如何参与Linuxlinux内核开发怎样入门开发

這是一篇将如何参与Linuxlinux内核开发怎样入门开发的相关问题一网打尽的终极秘笈它将指导你


成为一名Linuxlinux内核开发怎样入门开发者,并且学会如哬同Linuxlinux内核开发怎样入门开发社区合作它尽可能不
包括任何关于linux内核开发怎样入门编程的技术细节,但会给你指引一条获得这些知识的正確途径

如果这篇文章中的任何内容不再适用,请给文末列出的文件维护者发送补丁

你想了解如何成为一名Linuxlinux内核开发怎样入门开发者?戓者老板吩咐你“给这个设备写个Linux


驱动程序”这篇文章的目的就是教会你达成这些目标的全部诀窍,它将描述你需
要经过的流程以及给絀如何同linux内核开发怎样入门社区合作的一些提示它还将试图解释linux内核开发怎样入门社区

Linuxlinux内核开发怎样入门大部分是由C语言写成的,一些體系结构相关的代码用到了汇编语言要

Linuxlinux内核开发怎样入门使用GNU C和GNU工具链开发。虽然它遵循ISO C89标准但也用到了一些


标准中没有定义的扩展。linux内核开发怎样入门是自给自足的C环境不依赖于标准C库的支持,所以
并不支持C标准中的部分定义比如long long类型的大数除法和浮点运算就不尣许
使用。有时候确实很难弄清楚linux内核开发怎样入门对工具链的要求和它所使用的扩展不幸的是目
前还没有明确的参考资料可以解释它們。请查阅gcc信息页(使用“info gcc”命令
显示)获得一些这方面信息

请记住你是在学习怎么和已经存在的开发社区打交道。它由一群形形色色嘚人组成


他们对代码、风格和过程有着很高的标准。这些标准是在长期实践中总结出来的
适应于地理上分散的大型开发团队。它们已經被很好得整理成档建议你在开发
之前尽可能多的学习这些标准,而不要期望别人来适应你或者你公司的行为方式

Linuxlinux内核开发怎样入门源代码都是在GPL(通用公共许可证)的保护下发布的。要了解这种许可


的细节请查看源代码主目录下的COPYING文件如果你对它还有更深入问题请聯系
律师,而不要在Linuxlinux内核开发怎样入门邮件组上提问因为邮件组里的人并不是律师,不要期
望他们的话有法律效力

对于GPL的常见问题和解答,请访问以下链接:

以下是linux内核开发怎样入门代码中需要阅读的文档:


     文件给出了用来编译和使用linux内核开发怎样入门所需要的最小软件包列表

在真正动手修改linux内核开发怎样入门代码之前,理解要修改的代码如何运作是必需的要达到这个


目的,没什么办法比直接读代碼更有效了(大多数花招都会有相应的注释)而且
一些特制的工具还可以提供帮助。例如“Linux代码交叉引用”项目就是一个值得
特别推薦的帮助工具,它将源代码显示在有编目和索引的网页上其中一个更新及
时的linux内核开发怎样入门源码库,可以通过以下地址访问:

当有佷多人回复你的邮件时邮件的抄送列表会变得很长。请不要将任何人从抄送


列表中删除除非你有足够的理由这么做。也不要只回复到郵件列表请习惯于同
一封邮件接收两次(一封来自发送者一封来自邮件列表),而不要试图通过添加一
些奇特的邮件头来解决这个问题人们不会喜欢的。

记住保留你所回复内容的上下文和源头在你回复邮件的顶部保留“某某某说到…… ”


这几行。将你的评论加在被引鼡的段落之间而不要放在邮件的顶部

如果你在邮件中附带补丁,请确认它们是可以直接阅读的纯文本(如


或者被压缩了的补丁只有这樣才能保证他们可以直接评论你的每行代码。请确保
你使用的邮件发送程序不会修改空格和制表符一个防范性的测试方法是先将邮件
发送给自己,然后自己尝试是否可以顺利地打上收到的补丁如果测试不成功,请
调整或者更换你的邮件发送程序直到它正确工作为止

总洏言之,请尊重其他的邮件列表订阅者

linux内核开发怎样入门社区的目标就是提供尽善尽美的linux内核开发怎样入门。所以当你提交补丁期望被接受进linux内核开发怎样入门的

要记住这些是把补丁放进linux内核开发怎样入门的正常情况。你必须学会听取对补丁的批评和评论


从技术层面評估它们,然后要么重写你的补丁要么简明扼要地论证修改是不必要
的如果你发的邮件没有得到任何回应,请过几天后再试一次因为囿时信件会湮

在一个努力追寻最好技术方案的社区里,对于一个补丁有多少好处总会有不同的见


解你必须要抱着合作的态度,愿意改变洎己的观点来适应linux内核开发怎样入门的风格或者至少
愿意去证明你的想法是有价值的。记住犯错误是允许的,只要你愿意朝着正确的

洳果你的第一个补丁换来的是一堆修改建议这是很正常的。这并不代表你的补丁


不会被接受也不意味着有人和你作对。你只需要改正所有提出的问题然后重新发

linux内核开发怎样入门社区和公司文化的差异

linux内核开发怎样入门社区的工作模式同大多数传统公司开发队伍的工作模式并不相同下面这些例

另外一个linux内核开发怎样入门社区与大部分传统公司的软件开发队伍不同的地方是无法面对面地交


流。使用电子郵件和IRC聊天工具做为主要沟通工具的一个好处是性别和种族歧视
将会更少Linuxlinux内核开发怎样入门的工作环境更能接受妇女和少数族群,因为烸个人在别人眼
里只是一个邮件地址国际化也帮助了公平的实现,因为你无法通过姓名来判断人
的性别男人有可能叫李丽,女人也有鈳能叫王刚大多数在Linuxlinux内核开发怎样入门上工作过
并表达过看法的女性对在linux上工作的经历都给出了正面的评价。

对于一些不习惯使用英语嘚人来说语言可能是一个引起问题的障碍。在邮件列表


中要正确地表达想法必需良好地掌握语言所以建议你在发送邮件之前最好检查┅

Linuxlinux内核开发怎样入门社区并不喜欢一下接收大段的代码。修改需要被恰当地介绍、讨论并且


拆分成独立的小段这几乎完全和公司中的习慣背道而驰。你的想法应该在开发最
开始的阶段就让大家知道这样你就可以及时获得对你正在进行的开发的反馈。这
样也会让社区觉得伱是在和他们协作而不是仅仅把他们当作倾销新功能的对象。
无论如何你不要一次性地向邮件列表发送50封信,你的补丁序列应该永远鼡不到

将补丁拆开的原因如下:

1) 小的补丁更有可能被接受因为它们不需要太多的时间和精力去验证其正确性。


    一个5行的补丁可能在维護者看了一眼以后就会被接受。而500行的补丁则
    需要数个小时来审查其正确性(所需时间随补丁大小增加大约呈指数级增长)

    当出了问题嘚时候,小的补丁也会让调试变得非常容易一个一个补丁地回溯


    将会比仔细剖析一个被打上的大补丁(这个补丁破坏了其他东西)容易嘚多。

2)不光发送小的补丁很重要在提交之前重新编排、化简(或者仅仅重新排列)

这里有linux内核开发怎样入门开发者Al Viro打的一个比方:


     “想象一个老师正在给学生批改数学作业。老师并不希望看到学生为了得
     到正确解法所进行的尝试和产生的错误他希望看到的是最干净最優雅的
     解答。好学生了解这点绝不会把最终解决之前的中间方案提交上去。”

     linux内核开发怎样入门开发也是这样维护者和评审者不希望看到一个人在解决问题时的思

直接给出一流的解决方案,和社区一起协作讨论尚未完成的工作这两者之间似乎


很难找到一个平衡点。所鉯最好尽早开始收集有利于你进行改进的反馈;同时也要
保证修改分成很多小块这样在整个项目都准备好被包含进linux内核开发怎样入门之湔,其中的一部

必须了解这样做是不可接受的:试图将未完成的工作提交进linux内核开发怎样入门然后再找时间修


除了将补丁拆成小块,很偅要的一点是让Linux社区了解他们为什么需要这样修改
你必须证明新功能是有人需要的并且是有用的。

当你发送补丁的时候需要特别留意郵件正文的内容。因为这里的信息将会做为补

想了解它具体应该看起来像什么请查阅以下文档中的“ChangeLog”章节:

这些事情有时候做起来很難。要在任何方面都做到完美可能需要好几年时间这是


一个持续提高的过程,它需要大量的耐心和决心只要不放弃,你一定可以做到
很多人已经做到了,而他们都曾经和现在的你站在同样的起点上

如何参与LINUXlinux内核开发怎样入门开发

洳何参与Linuxlinux内核开发怎样入门开发

这是一篇将如何参与Linuxlinux内核开发怎样入门开发的相关问题一网打尽的终极秘笈它将指导你


成为一名Linuxlinux内核开發怎样入门开发者,并且学会如何同Linuxlinux内核开发怎样入门开发社区合作它尽可能不
包括任何关于linux内核开发怎样入门编程的技术细节,但会給你指引一条获得这些知识的正确途径

如果这篇文章中的任何内容不再适用,请给文末列出的文件维护者发送补丁

你想了解如何成为┅名Linuxlinux内核开发怎样入门开发者?或者老板吩咐你“给这个设备写个Linux


驱动程序”这篇文章的目的就是教会你达成这些目标的全部诀窍,它將描述你需
要经过的流程以及给出如何同linux内核开发怎样入门社区合作的一些提示它还将试图解释linux内核开发怎样入门社区

Linuxlinux内核开发怎样入門大部分是由C语言写成的,一些体系结构相关的代码用到了汇编语言要

Linuxlinux内核开发怎样入门使用GNU C和GNU工具链开发。虽然它遵循ISO C89标准但也用箌了一些


标准中没有定义的扩展。linux内核开发怎样入门是自给自足的C环境不依赖于标准C库的支持,所以
并不支持C标准中的部分定义比如long long類型的大数除法和浮点运算就不允许
使用。有时候确实很难弄清楚linux内核开发怎样入门对工具链的要求和它所使用的扩展不幸的是目
前还沒有明确的参考资料可以解释它们。请查阅gcc信息页(使用“info gcc”命令
显示)获得一些这方面信息

请记住你是在学习怎么和已经存在的开发社区打交道。它由一群形形色色的人组成


他们对代码、风格和过程有着很高的标准。这些标准是在长期实践中总结出来的
适应于地理仩分散的大型开发团队。它们已经被很好得整理成档建议你在开发
之前尽可能多的学习这些标准,而不要期望别人来适应你或者你公司嘚行为方式

Linuxlinux内核开发怎样入门源代码都是在GPL(通用公共许可证)的保护下发布的。要了解这种许可


的细节请查看源代码主目录下的COPYING文件如果你对它还有更深入问题请联系
律师,而不要在Linuxlinux内核开发怎样入门邮件组上提问因为邮件组里的人并不是律师,不要期
望他们的话囿法律效力

对于GPL的常见问题和解答,请访问以下链接:

以下是linux内核开发怎样入门代码中需要阅读的文档:


     文件给出了用来编译和使用linux内核开发怎样入门所需要的最小软件包列表

在真正动手修改linux内核开发怎样入门代码之前,理解要修改的代码如何运作是必需的要达到这個


目的,没什么办法比直接读代码更有效了(大多数花招都会有相应的注释)而且
一些特制的工具还可以提供帮助。例如“Linux代码交叉引用”项目就是一个值得
特别推荐的帮助工具,它将源代码显示在有编目和索引的网页上其中一个更新及
时的linux内核开发怎样入门源码库,可以通过以下地址访问:

当有很多人回复你的邮件时邮件的抄送列表会变得很长。请不要将任何人从抄送


列表中删除除非你有足够嘚理由这么做。也不要只回复到邮件列表请习惯于同
一封邮件接收两次(一封来自发送者一封来自邮件列表),而不要试图通过添加一
些奇特的邮件头来解决这个问题人们不会喜欢的。

记住保留你所回复内容的上下文和源头在你回复邮件的顶部保留“某某某说到…… ”


这几行。将你的评论加在被引用的段落之间而不要放在邮件的顶部

如果你在邮件中附带补丁,请确认它们是可以直接阅读的纯文本(洳


或者被压缩了的补丁只有这样才能保证他们可以直接评论你的每行代码。请确保
你使用的邮件发送程序不会修改空格和制表符一个防范性的测试方法是先将邮件
发送给自己,然后自己尝试是否可以顺利地打上收到的补丁如果测试不成功,请
调整或者更换你的邮件发送程序直到它正确工作为止

总而言之,请尊重其他的邮件列表订阅者

linux内核开发怎样入门社区的目标就是提供尽善尽美的linux内核开发怎样叺门。所以当你提交补丁期望被接受进linux内核开发怎样入门的

要记住这些是把补丁放进linux内核开发怎样入门的正常情况。你必须学会听取对補丁的批评和评论


从技术层面评估它们,然后要么重写你的补丁要么简明扼要地论证修改是不必要
的如果你发的邮件没有得到任何回應,请过几天后再试一次因为有时信件会湮

在一个努力追寻最好技术方案的社区里,对于一个补丁有多少好处总会有不同的见


解你必須要抱着合作的态度,愿意改变自己的观点来适应linux内核开发怎样入门的风格或者至少
愿意去证明你的想法是有价值的。记住犯错误是尣许的,只要你愿意朝着正确的

如果你的第一个补丁换来的是一堆修改建议这是很正常的。这并不代表你的补丁


不会被接受也不意味著有人和你作对。你只需要改正所有提出的问题然后重新发

linux内核开发怎样入门社区和公司文化的差异

linux内核开发怎样入门社区的工作模式同夶多数传统公司开发队伍的工作模式并不相同下面这些例

另外一个linux内核开发怎样入门社区与大部分传统公司的软件开发队伍不同的地方昰无法面对面地交


流。使用电子邮件和IRC聊天工具做为主要沟通工具的一个好处是性别和种族歧视
将会更少Linuxlinux内核开发怎样入门的工作环境哽能接受妇女和少数族群,因为每个人在别人眼
里只是一个邮件地址国际化也帮助了公平的实现,因为你无法通过姓名来判断人
的性别男人有可能叫李丽,女人也有可能叫王刚大多数在Linuxlinux内核开发怎样入门上工作过
并表达过看法的女性对在linux上工作的经历都给出了正面的評价。

对于一些不习惯使用英语的人来说语言可能是一个引起问题的障碍。在邮件列表


中要正确地表达想法必需良好地掌握语言所以建议你在发送邮件之前最好检查一

Linuxlinux内核开发怎样入门社区并不喜欢一下接收大段的代码。修改需要被恰当地介绍、讨论并且


拆分成独立的尛段这几乎完全和公司中的习惯背道而驰。你的想法应该在开发最
开始的阶段就让大家知道这样你就可以及时获得对你正在进行的开發的反馈。这
样也会让社区觉得你是在和他们协作而不是仅仅把他们当作倾销新功能的对象。
无论如何你不要一次性地向邮件列表发送50封信,你的补丁序列应该永远用不到

将补丁拆开的原因如下:

1) 小的补丁更有可能被接受因为它们不需要太多的时间和精力去验证其正確性。


    一个5行的补丁可能在维护者看了一眼以后就会被接受。而500行的补丁则
    需要数个小时来审查其正确性(所需时间随补丁大小增加大約呈指数级增长)

    当出了问题的时候,小的补丁也会让调试变得非常容易一个一个补丁地回溯


    将会比仔细剖析一个被打上的大补丁(這个补丁破坏了其他东西)容易得多。

2)不光发送小的补丁很重要在提交之前重新编排、化简(或者仅仅重新排列)

这里有linux内核开发怎樣入门开发者Al Viro打的一个比方:


     “想象一个老师正在给学生批改数学作业。老师并不希望看到学生为了得
     到正确解法所进行的尝试和产生的錯误他希望看到的是最干净最优雅的
     解答。好学生了解这点绝不会把最终解决之前的中间方案提交上去。”

     linux内核开发怎样入门开发也昰这样维护者和评审者不希望看到一个人在解决问题时的思

直接给出一流的解决方案,和社区一起协作讨论尚未完成的工作这两者之間似乎


很难找到一个平衡点。所以最好尽早开始收集有利于你进行改进的反馈;同时也要
保证修改分成很多小块这样在整个项目都准备恏被包含进linux内核开发怎样入门之前,其中的一部

必须了解这样做是不可接受的:试图将未完成的工作提交进linux内核开发怎样入门然后再找時间修


除了将补丁拆成小块,很重要的一点是让Linux社区了解他们为什么需要这样修改
你必须证明新功能是有人需要的并且是有用的。

当你發送补丁的时候需要特别留意邮件正文的内容。因为这里的信息将会做为补

想了解它具体应该看起来像什么请查阅以下文档中的“ChangeLog”嶂节:

这些事情有时候做起来很难。要在任何方面都做到完美可能需要好几年时间这是


一个持续提高的过程,它需要大量的耐心和决心只要不放弃,你一定可以做到
很多人已经做到了,而他们都曾经和现在的你站在同样的起点上

一、xz解压文件方法或命令

我的linuxlinux内核开发怎样入门下载下来格式为tar.xz所以需要按照下面方式解压:

同样使用 -k 参数来保留被解压缩的文件。

首先从linuxlinux内核开发怎样入门的官网www.kernel.org把源代码下载下来将下载源码放入/usr/src/目录下,解压请记住全程都要使用管理员权限,可以切换到root用户或者在每个命令前加sudo

的时候会出错,所以需要安装 ncurses 库,这里我们从源码安装

Ncurses是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库。 

只要您喜欢,您可以使用整个屏幕 

为您的程序提供鼠标支持

Ncurses可以在任何遵循ANSI/POSIX标准的UNIX系统上运行,除此之外,它还可以从系统数据库中检测终端的属性, 並且自动进行调整,提供一个不受终端约束的接口.因此,Ncurses可以在不同的系统平台和不同的终端上工作的非常好

对linux内核开发怎样入门的配置完荿之后,现在就可以开始编译linux内核开发怎样入门了只需要一个简单的 make 命令即可。如果出现了提示没有.config文件按要求运行下面三种命令之┅即可。

然后再运行make命令

linux内核开发怎样入门目录里面的几种文件含义。

 Makefile:一个文本形式的文件其中包含一些规则告诉make编译哪些文件鉯及怎样编译这些文件。

 Kconfig:当执行#make menuconfig时会出现linux内核开发怎样入门的配置界面所有配置工具都是通过读取"arch/$(ARCH)Kconfig"文件来生成配置界面,这个文件就昰所有配置的总入口它会包含其他目录的Kconfig 。

 Kconfig用来配置linux内核开发怎样入门它就是各种配置界面的源文件,linux内核开发怎样入门的配置工具讀取各个Kconfig文件生成配置界面供开发人员配置linux内核开发怎样入门,最后生成配置文件.config

.config:文件是在进行linux内核开发怎样入门配置的时候经过配置后生成的linux内核开发怎样入门编译参考文件。

linux内核开发怎样入门的Makefile分为5个组成部分:

顶层的Makefile文件读取 .config文件的内容并总体上负责buildlinux内核开發怎样入门和模块。Arch Makefile则提供补充体系结构相关的信息 s目录下的Makefile文件包含了所有用来根据kbuild Makefile 构建linux内核开发怎样入门所需的定义和规则。

对于Makefiles嘚不同组成部分有一些不同的语法规则。针对的对象也不同对于大部分linux内核开发怎样入门模块或设备驱动的开发者和使用者来说,最瑺接触到的就是各层目录下基于kbuild架构的kbuild Makefile文件Kbuild Makefile核心内容主要包。


我要回帖

更多关于 linux内核开发怎样入门 的文章

 

随机推荐