`
jackchen0227
  • 浏览: 142619 次
  • 性别: Icon_minigender_1
  • 来自: 帝都
社区版块
存档分类
最新评论

[zz]我读过的linux书籍

 
阅读更多

    工作几年来,一直从事Linux内核驱动方面的开发。从接触Linux到现在,读过不少Linux方面的书籍,现把认为很不错的一部分列出来和大家分享一下。

入门类
    一直认为,在一个系统上学习开发之前,首先需要熟悉这个系统的使用。鉴于天朝的国情,绝大部分人第一个接触的操作系统就是Windows,因此对于这绝大部分人来说,如果要学习Linux开发,学会使用这个系统都是必不可少的一个环节。
    现在的Linux初学者是幸福的,随着Linux桌面环境越来越易用,入门一个新的系统是非常容易的事情。虽然命令行对于提高工作效率更加有效,但我们完 全可以把熟悉命令的过程放到日常使用中进行。无论学习什么知识,在实践中学习都是高效而且有趣的。在这个阶段,我们也未必一定需要书籍。现在很多 Linux发行版的Wiki写得都非常详细,在使用某一种发行版时找到相应的Wiki阅读查询就可以了。而且,桌面环境变化太快,关于桌面的介绍类书籍几 乎都没有必要看,这类书籍大多刚一出版就过时了。
    那入门类书籍里哪些比较有价值呢?我比较推荐涉及的技术相对比较稳定的书。比如,Linux基本的体系结构和命令一般都是经久不变的,甚至从上古时期的Unix开始就没太多变化,这类书籍讲解的知识也是以后大幅提高我们的生产力的基础。比如《鸟哥的Linux私房菜》 ,比如《Unix Power Tools》 (中译名是“UNIX超级工具”),或者是为Linux+认证考试准备的《Linux+ Study Guide》 。当然,这一类书籍其实都不必精读,快速浏览之后作为工具书备查就可以了。

编程类
    类Unix系统的编程书籍里,最经典的莫过于简称为APUE的《Advanced Programming in the UNIX Environment》 (中 译名是“Unix环境高级编程”),这本书被广大Unix程序员(包括Linux)捧为“圣经”。借用葛大爷的广告词:“这就像进馆子一样,一条街上,哪 家人多我进哪家”。APUE对类Unix系统的编程接口讲解的非常全面详细,对于这本书,我们不仅要精读,还应该放在案头常备。
    但是,APUE对于Linux编程初学者似乎稍深了一点,而且很多细节在Linux中并不会用到。讲述Linux编程的书籍里,《Advanced Linux Programming》 应该更加适合初学者。不要被书名中的“Advanced”吓到,书里的内容还是很容易理解的。看完这本书再看APUE应该效果会更好。
    如果要开发GUI程序,上面两本书就无能为力了。在Linux世界里,最常用的GUI Toolkit是GTK+和QT。
GTK+的书籍并不多,在线文档只适合查阅,并不是一个完整的学习体系。《Foundations of GTK+ Development》 是其中很不错的一本书,喜欢GTK+的开发者可以拿来作为入门书籍。
    相对来说,QT的书籍就很丰富了,这和QT具有良好的跨平台能力有很大关系,QT的书籍并不只是写给Linux程序员看的,在Windows和MAC OSX下同样可以使用QT开发程序。比较值得一看的QT类书籍有《C++ GUI Programming with 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 Kernel Development 》已经更新到第三版了。LKD是非常适合内核初学者阅读的一本好书,对它的评价可以引用陈莉君老师的译者序:
    相对于 Daniel P. Bovet 和 Marco Cesati 的内核巨著《 Understand the Linux Kernel 》,它少了五分细节,相对于实践经典《 Linux Device Drivers 》,它多了五分说理。可以说,本书填补了 Linux 内核理论和实践之间的鸿沟,“一桥飞架南北,天堑变通途”。
    谢谢陈老师,她的译者序帮我引出了另外要谈到的两本经典书籍,对,就是《Understanding the 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拎出来,还可以参考《Managing Projects with GNU Make 》。
    自动构建工具可以参考《Autotools 》。如果您准备使用cmake,推荐cjacker的《Cmake实践 》。《Mastering CMake 》据说是cmake的权威书籍,但一直无缘得见啊。
    说到编辑器,在Linux里最著名的莫过于Vim和Emacs,关于这两者的背景,可以去看看《为何Emacs和Vim被称为两大神器 》。我几乎没用过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 with Git 》或者《Git Internals 》或者《Pro Git 》。

其它
    除了以上几个类别,还有一些书籍值得推介。
    比如《The Art of Unix Programming 》,主要介绍了Unix系统领域中的设计开发哲学、思想文化体系以及社群文化等,覆盖面非常广。书中的一些内容和《Revolution OS 》有相似之处,大家可以自己印证一下。对于这本书,我们也完全可以把它当做小说或者历史书来看,可以躺在床上看,也可以瘫在沙发上看,或者像怪怪那样坐在马桶上看,总之,不必一定要端坐在书桌前。
    《Computer Systems: A Programmer's Perspective 》 很多人都推荐过,这是一本非常经典的计算机体系方面的教材。CSAPP的内容基础全面,讲解简明扼要,易于理解,仔细读完之后对理清计算机体系结构甚至是 Linux内核都非常有帮助的。虽然中文名被译为《深入理解计算机系统》(这个译名很不贴切),但相比之下,为什么会让人感觉国内的同类教材更加“深奥” 呢?也许,这就是作者功力的差距吧。

分享到:
评论

相关推荐

    应用广泛的嵌入式操作系统——ZZ-Linux.pdf

    应用广泛的嵌入式操作系统——ZZ-Linux.pdf

    base zz zz zz zz

    base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz

    Linux经典学习书籍

    第一章 linux 系统简介及安装  Linux 内核项目是由芬兰赫尔辛基大学的 Linus ...内核版本号的格式为 xx.yy.zz 版本号中 yy为奇数的是开发版本,用于开发和测试 版本号中 yy为偶数的是稳定版本,用于生产系统中

    ZZ561401.CAB

    ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB

    Advanced Linux Programming.pdf

    Advanced Linux Programming zz from: 20本最好的Linux免费书籍 http://cocre.com/?p=355

    wincc AX NF ZZ

    wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。

    zz CAD快速计算长度插件

    在CAD中想要快速测量长度,在CAD工具栏找到加载应用程序,再点击加载 加载成功后在输入栏输入“zz”(不分大小写)在选择你需要测量的线段即可。

    超出NLO QCD的高横向动量的ZZ产生

    我们研究了四轻子最终状态ℓ+ℓ-ℓ+ℓ-的产生,这些状态主要由一对弱电Z玻色子ZZ产生。 使用LoopSim方法,我们合并ZZ和ZZ + jet的NLO QCD结果,并获得ZZ产生的近似NNLO预测。 还包括对ZZ过程的精确胶子融合环平方的...

    7zip_linux_21.7.deb

    根据 7zip 官方版本制作的 deb 安装包,可以直接在Linux 系统上使用 `dpkg...本资源仅仅是为方便安装进行的deb包封装,并对可执行文件 `7zz` 进行了重命名复制为 `7zip`,因此安装后使用时可以直接使用`7zip`作为命令。

    3_Level_ZZ_Semafor.zip_3 level_zz_3_Level_ZZ_semafor_ZZ Semafor_

    ,主图指标,顶底信号,突破,转折信号,都很明显

    Linux应用技术:Linux的安装.pptx

    第一讲 初识Linux --概况及安装;第一讲 主要内容;安装前的准备;添加虚拟机(演示);安装版本选择;安装途径选择;安装方式选择;安装演示;安装演示;Linux的分区格式;Linux如何表示硬盘和分区;Linux如何表示硬盘和分区;...

    Linux 中util-linux 工具包的源码

    Linux 中util-linux 工具包的源码,可用于交叉编译,里面包含hwclock等Linux命令的完整版,busybox里面系统自带的命令是阉割版,这里的是完整版本

    程序员的编辑器——VIM(zz) - 饮水思源

    程序员的编辑器——VIM(zz) - 饮水思源

    linux教程——很使用的那种

    linux分为:redhat linux系列和debian系列。 X Window是一种协议。 unix图形环境是CDE:common desktop environment通用桌面环境。 linux系统结构:硬件、内核层、shell层、应用层、用户。 在安装linux的时候,会...

    zz809.com留言本

    留言本改自柏图留言本 BTB 1.2 管理员:zz809 密 码:zz809.com

    zz_layer.rar

    zz_layer.il是源代码,install.bat是安装的 使用举例:zz 1-3 4 126 127 层号定义,与PADS类似:1~120是etch ;SolderMask: 121(top) 128(bot) ;Silkscreen: 126(top) 129(bot) ;Assembly: 127(top) 130(bot) ;Paste...

    ZZ公司安全生产守则.docx

    ZZ公司安全生产守则.docx

    tokyo-ghoul-2017_indonesian-1688080_TOKYO_zz_

    zz;ldkfjntmtmsbggyyessdd

    android应用源码zz-doctor中医大夫助理信息系统.rar

    android应用源码zz-doctor中医大夫助理信息系统

    ZZ_MODIFIED_GEEBINF.ENS

    基于国家标准的endnote的输出样式,适用于学生党论文插入文献参考,较为方便。endnote论文神器。

Global site tag (gtag.js) - Google Analytics