Linux经典书籍

Linux经典书籍

工作几年来,一直从事Linux内核驱动方面的开发。从接触Linux到现在,读过不少Linux方面的书籍,现把认为很不错的一部分列出来和大家分享一下。
入门类 
   
一直认为,在一个系统上学习开发之前,首先需要熟悉这个系统的使用。鉴于天朝的国情,绝大部分人第一个接触的操作系统就是Windows,因此对于这绝大部分人来说,如果要学习Linux开发,学会使用这个系统都是必不可少的一个环节。
   
现在的Linux初学者是幸福的,随着Linux桌面环境越来越易用,入门一个新的系统是非常容易的事情。虽然命令行对于提高工作效率更加有效,但我们完全可以把熟悉命令的过程放到日常使用中进行。无论学习什么知识,在实践中学习都是高效而且有趣的。在这个阶段,我们也未必一定需要书籍。现在很多 Linux发行版的Wiki写得都非常详细,在使用某一种发行版时找到相应的Wiki阅读查询就可以了。而且,桌面环境变化太快,关于桌面的介绍类书籍几乎都没有必要看,这类书籍大多刚一出版就过时了。
   
那入门的书籍里哪些比较有价值呢?我比较推荐涉及的技术相对比较稳定的书。比如,Linux基本的体系结构和命令一般都是经久不变的,甚至从上古时期的Unix开始就没太多变化,这类书籍讲解的知识也是以后大幅提高我们的生产力的基础。比如《鸟哥的Linux私房菜》 ,比如Unix Power Tools (中译名是“UNIX超级工具),或者是为Linux+认证考试准备的Linux+ Study Guide 。当然,这一类书籍其实都不必精读,快速浏览之后作为工具书备查就可以了。
编程类 
   
Unix系统的编程书籍里,最最经典的莫过于简称为APUEAdvanced Programming in the UNIX Environment(中译名是“Unix环境高级编程),这本书被广大Unix程序员(包括Linux)捧为圣经。借用葛大爷的广告词:这就像进馆子一样,一条街上,哪家人多我进哪家APUE对类Unix系统的编程接口讲解的非常全面详细,对于这本书,我们不仅要精读,还应该放在案头常备。
   
但是,APUE对于Linux编程初学者似乎稍深了一点,而且很多细节在Linux中并不会用到。讲述Linux编程的书籍里,Advanced LinuxProgramming 应该更加适合初学者。不要被书名中的“Advanced”吓到,书里的内容还是很容易理解的。看完这本书再看APUE应该效果会更好。
   
如果要开发GUI程序,上面两本书就无能为力了。在Linux世界里,最常用的GUI ToolkitGTK+QT
GTK+
的书籍并不多,在线文档只适合查阅,并不是一个完整的学习体系。Foundationsof GTK+ Development 是其中很不错的一本书,喜欢GTK+的开发者可以拿来作为入门书籍。
   
相对来说,QT的书籍就很丰富了,这和QT具有良好的跨平台能力有很大关系,QT的书籍并不只是写给Linux程序员看的,在WindowsMAC OSX下同样可以使用QT开发程序。比较值得一看的QT类书籍有C++ GUI Programmingwith QT4 、《Foundations of QT Development 》、The Art of Building QT Applications ,这三本都比较适合QT初学者阅读。另外,《Advanced Qt Programming 》会介绍到QT一些比较高级的用法,适合有一定QT基础的读者阅读。

内核类 
   
对于Linux内核或者设备驱动的开发者,最全面最直接的学习资料一定是Linux内核代码及其文档。Linux内核的发布周期很短,相关书籍的出版完全跟不上脚步。但随着内核代码的日益庞大,学习曲线越来越陡峭,入门者又非常需要书籍来作为指导,这确实是非常矛盾的事情。所幸,很多Linux内核技术作家也是很勤奋的,经常会更新自己的作品。就像Robert Love,以2.6内核为蓝本的《Linux KernelDevelopment 》已经更新到第三版了。LKD是非常适合内核初学者阅读的一本好书,对它的评价可以引用陈莉君老师的译者序:
   
相对于 Daniel P. Bovet Marco Cesati的内核巨著《 Understand the Linux Kernel》,它少了五分细节,相对于实践经典《 Linux Device Drivers》,它多了五分说理。可以说,本书填补了 Linux内核理论和实践之间的鸿沟,一桥飞架南北,天堑变通途
   
谢谢陈老师,她的译者序帮我引出了另外要谈到的两本经典书籍,对,就是Understandingthe Linux Kernel 和《Linux Device Drivers 》。对于这两本书,如果要挑它们的缺点,我只能说,内容有点老,很多知识点都需要更新了,除此之外,我要说的是,是它们把我带上了内核驱动开发这条路上来,当然,还有LKD
   
最近,我又发现一本分析Linux内核的优秀书籍,就是Professional Linux Kernel Architecture 。这本书我目前正在读,写得非常好,而且因为此书相对较新(只是相对,2.6.24内核在现在看来也很老了),没有看过ULK的同学可以直接看这本书。
工具类 
   
工欲善其事,必先利其器。进行Linux开发,相关工具还是需要熟练使用的。比如,GNU Tool Chain、自动构建工具、编辑器、版本控制工具等等。
   
这里有一本包罗万象的书,叫做《Handbook of Open Source Tools 》,书中介绍了各种各样的开源工具,可称之为开源技术的总决式。这本书试图面面俱到,因此并不深入,粗读即可。
    GNU Tool Chain
参考Redhat的《The GNUPro Toolkit 》已经足够了,如果单独把makefile拎出来,还可以参考ManagingProjects with GNU Make 》。
   
自动构建工具可以参考《Autotools 》。如果您准备使用cmake,推荐cjacker的《Cmake实践 》。《Mastering CMake 》据说是cmake的权威书籍,但一直无缘得见啊。
   
说到编辑器,在Linux里最著名的莫过于VimEmacs,关于这两者的背景,可以去看看《为何EmacsVim被称为两大神器 》。我几乎没用过Emacs,曾经在当当做活动时花9块钱买了一本《学习GNU Emacs 》,有这本书作为Emacs的入门我想应该够了。Vim是我经常使用的编辑器之一(另一个是Kate,最初喜欢上Kate的原因之一就是它提供了Vim编辑模式),相关的书籍有两本值得一读:《A Byte of Vim 》和《Hacking Vim 7.2 》,但是对于初学者,首先跟着Vim自带的vimtutor练习效果会更好。
    Linux
下的版本控制工具很多,有传统的Subversion,也有现在非常流行分布式工具如Git等。Subversion可以参考这本《Version Control with Subversion 》,Git可以参考《Version Control withGit 》或者《Git Internals 》或者《Pro Git 》。
其它 
   
除了以上几个类别,还有一些书籍值得推介。
   
比如《The Art of Unix Programming 》,主要介绍了Unix系统领域中的设计开发哲学、思想文化体系以及社群文化等,覆盖面非常广。书中的一些内容和《RevolutionOS 》有相似之处,大家可以自己印证一下。对于这本书,我们也完全可以把它当做小说或者历史书来看,可以躺在床上看,也可以瘫在沙发上看,或者像怪怪那样坐在马桶上看,总之,不必一定要端坐在书桌前。

ComputerSystems: A Programmer's Perspective 很多人都推荐过,这是一本非常经典的计算机体系方面的教材。CSAPP的内容基础全面,讲解简明扼要,易于理解,仔细读完之后对理清计算机体系结构甚至是Linux内核都非常有帮助的。虽然中文名被译为《深入理解计算机系统》(这个译名很不贴切),但相比之下,为什么会让人感觉国内的同类教材更加深奥呢?也许,这就是作者功力的差距吧。

操作系统
Linux 内核设计与实现(第2 版)》
《深入理解Linux 内核(第二版)》
Linux内核分析与编程》
Linux
方面的好书最多。其中《Linux内核设计与实现(第2 版)》(RobertLove著,机械工业出版社出版译
著)属短小精悍之作,用作《操作系统概念》的配套正好。
《深入理解L i n u x内核(第二版)》(Daniel Bovet著,中国电力出版社出版译著)分析全面透彻,不过国外已经出版的最新版尚未引进。
此外,倪继利的《Linux内核分析与编程》(电子工业出版社)是国人的经验总结,赵炯的《Linux内核完全注释》分析的是0.11版内核,适合初学者,都可以列入候选。
驱动程序开发
Linux 设备驱动程序》(第三版)
驱动程序的开发和操作系统内核其实息息相关。所以本书的内容与前面的大类难免会有一些重叠。作为黑客世界的经典,本书实在不需要我多加推荐了。值得一提的是译者(魏永明、耿岳、钟书毅)都是国内Linux界有数的顶尖人物。
系统编程
UNIX 环境高级编程》(英文影印版)(第2 版)
R. Stevens
也许是有史以来最伟大的技术图书作家,虽然他辞世日久,但是人们对他的景仰反而因为其著作的少有褪色而与日俱增。如果本文的范围扩大到网络编程,他的另外两部圣经级著作《TCP/IP详解》和《UNIX网络编程》也绝对应该入选。本书的地位相当于甚至还超过了Richter著作在Windows世界的地位

转自:http://hi.baidu.com/cchaha0227/blog/item/1b98afce335a5a0493457e70.html

入门篇 
   
LINUX权威指南》书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux。另外比较热门的也可以看看《鸟哥的私房菜》等书,偏管理类的书。如果想做server方向的可以找来看看。 
驱动篇 
   
LINUX设备驱动程序》就是网上说的“LDD”,经典之作,必备书籍。国产经典《Linux驱动详细解》也是一本非常不错的书,很实用,书中源代码分析比较多,基于2440的,对linux外围驱动有很全面的讲解 
内核篇 
   
浙江大学的《LINUX内核源代码情景分析》,外国鬼子的《莱昂氏UNIX源代码分析》还有《深入理解linux内核》都是出名的经典巨作。另外赵炯的《LINUX内核完全剖析--基于0.12内核》也非常不错,对内核代码进行了详细的注释,非常有助于对内核的理解和代码的分析。 
shell 
LINUXUNIXShell编程指南》 

ABS,高级Bash脚本编程指南:

http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/

Learningthe bash shell

http://book.douban.com/subject/3296982/

内容清晰,提纲挈领,书不是很厚,可以很快看完,然后投入实践。
1
、《AdvancedBash-Scripting Guide》,即ABShttp://tldp.org/LDP/abs/html/

经典的Online教程,内容全面,对每一个知识点都有相当多的实例,适合系统的学习。之前有翻译的版本出到过3.9.1
2
、《UNIXShells by Example Fourth Edition》,网上有chm下载。
这本书适合用的时候查询,结构很清晰,以语法为主。它的亮点在于将几种常用的不同种类的Shell分开来描述。
3
、《LinuxCommand Line and Shell Scripting Bible》,网上有pdf下载。
这本书也很全面。适合那些喜欢一章一章看书的人去学,印刷质量相当的好。
4
、《LINUXUNIX Shell编程指南》,网上有pdf下载。
5
、《UNIXShells by Example Fourth Edition》推荐这本,网上有中文版pdf。内容丰富,讲解也不错。每个例子都是cshellkshbash三种都有,最好着重学习一个,个人喜欢bash,简练且紧凑。c shell的交互功能做的倒是不错,不过要是用它写脚本你会想去撞墙。
应用编程 
   
不用说了肯定是《UNIX环境高级编程》被称为UNIX编程的圣经。 
TCP/IP 
   
TCP/IP详解》作者W. Richard Stevens也是《UNIX环境高级编程》的作者,牛人出的书没有一本不是经典的。但是英年早逝,默哀一下。 
c语言 
   
The CProgramming Language》正是作者造出来的c语言,书能垃圾就怪了 
   
c和指针》和《c缺陷和陷阱》两本必备。包含了c语言最容易出错的地方,加深c语言功力的好材料。 
关于算法 
《算法导论》

转自:http://yuyunxin511.blog.163.com/blog/static/6137357201010122580223/
其实学什么教材倒是其次,坚持只用linux做桌面环境才是关键,同时拔掉你的鼠标。

 

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值