linux内核入门_西邮

linux内核入门_西邮

ID:33933631

大小:198.93 KB

页数:15页

时间:2019-02-28

linux内核入门_西邮_第1页
linux内核入门_西邮_第2页
linux内核入门_西邮_第3页
linux内核入门_西邮_第4页
linux内核入门_西邮_第5页
资源描述:

《linux内核入门_西邮》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、走近Linux内核作者:[王聪]不要理会任何一个告诉你内核开发是困难,特别或者不同的人。它是一个大的程序,而且bug修复或驱动编写是一个最佳起点。它也没有什么魔力,也不是使用只有留着络腮胡的老手才能读懂的语言编写。──AlanCox[编辑]简介这篇文章是专门写给那些对Linux内核感兴趣,却又不知道如何着手去读懂那么多代码的内核新手。也许你刚刚了解Linux,又急于探索Linux的内部秘密;也许你是一个Linux开发者,熟悉应用程序的开发,又雄心勃勃准备向内核世界进发。那么这篇文章正是你需要的,它会带你走进内核的世界,伴你渡过危险的沼泽。通过分享我们自己的经历,希望有更多的人

2、能够加入到Linux内核开发者行列。内核开发向来被视为非常神秘的工作,仿佛只有传说中的留着长长的络腮胡的黑客们才能从事它。其实不然,Linux内核的开发和其它大型项目没有多少差别,只不过它的调试确实有点特别,需要一些特别的技巧。不要恐慌(Don'tPanic!),只要你下功夫,你也能参与内核的开发,它的确是一件非常好玩的事。[编辑]需要准备什么当然,你首先要有一台可供支配的电脑,最好装有Linux。如果可以,最好再有一台专门供你调试代码的机器,因为没人能保证调试内核的过程中不会让你的文件系统崩溃。或者,至少有一块专门给调试内核使用的硬盘。最好还有一个固定的互联网接口,毕竟Li

3、nux内核开发是在网络上进行的,而且你也会经常在互联网上搜索一些有用的信息。如果你是一位超级geek的话,再准备一根双机串口线,它能帮助你从一台机器上“聆听”另一台机器上内核运行中的“抱怨”。嗯,有点像是外科医生给病人听诊,这看起来很酷,不是吗?如果你准备在一台非计算机设备上调试你的内核(这没什么奇怪的,Linux早已经被移植到千奇百怪的系统上),那么你还需要准备相应的硬件,或者它的模拟器,或者其它一些工具。如果你有在非计算机设备上调试Linux内核的经验,请在这里自由添加相应的内容。[编辑]开始我们假设上面的东西你都准备好了,整装待发,现在可以正式进军内核了。当然了,如果你

4、对Linux上的开发已经很熟悉了,你可以安全地跳过这一节。好了,出发,水手们![编辑]1.精通C语言编程不是我们一味推崇C语言,而是C语言的的确确太适合做内核开发了。C语言的诞生源于编写Unix内核代码,它精练的设计哲学确实做到了这一点。甚至有人这样评价C语言──“它联合了汇编的所有威力。”如果你还不懂C,赶快去学吧。如果你是一名编程新手,不推荐用C作为你的入门语言,原因如下:•编程新手最需要了解的是编程的概念和对编程的基本认识,而过多的接触C语言往往会把你引出这一目的,会让你把注意力集中到一些奇怪的语言特性上,而不是编程语言本身。•编程新手往往对计算机了解不够深刻,不清楚计

5、算机的内部结构,而C语言恰恰就是和计算机内存/编码/CPU打交道,最起码,调试那些“隐晦”的错误时如此。(想想你是不是没有把一个指向指针的指针的指针指向正确的位置。)•学好C语言需要下很大的功夫,最起码不能低于两年。(当然如果你不打算学好那得另说了。)所以,最好先学一门比较简单的编程语言作为铺垫。不妨试一下Python,它比Java还要简单。当然了,这并非绝对,因人而异。如果你真的决定开始学习C语言,那么推荐的入门书籍仍然是K&R的《TheCProgrammingLanguage》。过去这么多年了,它仍然被奉为入门的首选,可见其有多么经典。不过仅仅了解C的语法,能编写一些小的

6、程序是远远不够的。你必须能够熟练地操纵C语言,了解它的一些缺陷和陷阱,让它变成你的利器。有句话说得好:“C语言就像一把刻刀,简单,锋利,并且在技师手中非常有用。和任何锋利的工具一样,C会伤到那些不能驾驭它的人。”读一读《CTrapsandPitfalls》和《ExpertCProgramming》吧,它们能让你有一个大的提升,成为一名C语言高手。如果碰巧你是一位C++的推崇者,那么下面的一些引用或许能说服你开发Linux内核不使用C++(摘自LKMLFAQ)。Linus在2004年说:Infact,inLinuxwedidtryC++oncealready,backin199

7、2.Itsucks.Trustme-writingkernelcodeinC++isaBLOODYSTUPIDIDEA.他认为:C++编译器是不可靠的,1992年的时候更糟,有一些基础性的东西没有改变:C++的异常处理是broken(不知道怎么翻译这个词好)的,对内核来说它更是broken。任何一个喜欢把内存分配藏到你背后的编译器或者语言,都不是你编写内核的好的选择。你可以用C来编写OO代码,而不用C++的一些“废话”。AndrewD.Balsa如是说:Linux一开始的时候gcc还没有很好的C++实现

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

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

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