`

我的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内核都非常有帮助的。虽然中文名被译为《深入理解计算机系统》(这个译名很不贴切),但相比之下,为什么会让人感觉国内的同类教材更加“深奥” 呢?也许,这就是作者功力的差距吧。
分享到:
评论

相关推荐

    开源书架 开源书架 开源书架 开源书架

    2. **跨平台**:通常开源软件会支持多种操作系统,如Windows、MacOS和Linux,以便不同平台的用户都能使用。 3. **社区支持**:开发者和用户社区是开源项目的重要组成部分,用户可以通过论坛、邮件列表等渠道获取帮助...

    linux模块Module简析

    如果将Linux内核比喻为一个书架,那么书架上的每一本书就可以看作是内核提供的各种功能。当我们往书架上添加一本书时,实际上就是在向内核添加一个模块;而当我们将一本书从书架上取走时,也就相当于从内核中卸载了...

    Linux 编程经典书籍推荐

    值得一提的是,Google总裁佩林在其办公室内的书架上也有这本书的英文版,由此可见该书在全球范围内的影响力。 #### 2. 《深入理解Linux内核》(第三版) - **作者**:Daniel Bovet & Marco Cesati - **推荐指数**...

    Linux Kernel Development,2nd Edition

    《Linux Kernel Development, 2nd Edition》是Robert Love所著的一部关于Linux内核开发的重要著作,对于深入了解...这本书是每个Linux开发者书架上的必备之选,无论你是初学者还是经验丰富的工程师,都能从中获益匪浅。

    Building Embedded Linux Systems 2nd Edition

    Safari Bookshelf(***)是专为程序员和IT专业人士设计的首选在线参考图书馆,它提供了超过1000本书籍的搜索功能,订阅者可以在数秒内找到对时间敏感问题的答案,并且可以阅读书架上的书籍,从头到尾或直接跳转到...

    linux系统调整分区大小

    ### Linux系统调整分区大小 在Linux环境中,对分区进行调整是一项常见的系统管理任务。本文将详细介绍如何在Linux系统中调整分区大小,特别是针对文件系统的扩展与收缩操作。 ### 概述 在传统的硬盘管理和文件...

    Linux设备驱动第3版(英文版)

    用户不仅可以从头到尾阅读书架上的书籍,也可以直接翻到需要的页面,现在可以通过免费试用体验这项服务。 本书的作者包括Linux内核开发者Jonathan Corbet,他是***的编辑,同时是多种Linux相关书籍的合著者。...

    Linux设备驱动程序第三版英文(ldd3).含详细目录,美化

    订阅者可以迅速找到关键问题的答案,甚至可以免费试用,直接从书架上阅读书籍或快速翻到需要的页面。 “About the Authors”部分介绍了三位作者的背景,Jonathan Corbet在大学期间接触到了BSD Unix源代码,从此便...

    我的后端开发书架 2.0.pdf

    1. **《Linux内核设计与实现 - Linux Kernel Development 第3版》** - **作者**:Robert Love - **简介**:这本书以其简洁流畅的语言,对Linux内核的关键算法进行了深入浅出的解析。相比其他更为详尽的技术书籍...

    行业资料-建筑装置-带黑板的书架.zip

    ZIP格式是最常见的压缩格式之一,它支持文件和文件夹的压缩,并且可以跨平台使用,无论是在Windows、Mac还是Linux系统上都能轻松处理。 打开这个ZIP压缩包,我们会找到“带黑板的书架.pdf”。PDF(Portable ...

    行业文档-设计装置-旋转书架电视柜.zip

    这需要硬件和软件的紧密结合,通常基于Linux或其他实时操作系统。 4. **人机交互设计**:设计过程会考虑用户体验(UX)和用户界面(UI),以提供直观的控制面板或应用程序,让用户轻松操作电视柜的各项功能。 5. *...

    安卓Android源码——图书书架源码.zip

    Android是一种基于Linux内核的开源操作系统,主要应用于移动设备,如智能手机和平板电脑。开发者通常使用Java或Kotlin语言进行编程,并通过Android Studio集成开发环境(IDE)来编写、调试和构建应用。 在这个"图书...

    Android应用源码项目之——漂亮的平台书架.zip

    Android是一种基于Linux内核的开源移动操作系统,广泛应用于智能手机和平板电脑。它由Google主导并维护,提供了丰富的API和工具,让开发者可以创建各种应用程序。在本项目中,开发者将深入接触到Android的四大组件:...

    Android项目之——漂亮的平台书架.rar

    它以Linux内核为基础,结合了丰富的应用编程接口(API)和强大的开发工具,支持多种编程语言如Java、Kotlin和C++,为开发者提供了灵活性和扩展性。 主要内容 架构层次: Linux内核:Android的底层使用Linux内核,...

    Android应用源码项目之——漂亮的平台书架-IT计算机-毕业设计.zip

    Android是由Google主导开发的开源移动操作系统,它基于Linux内核,支持各种智能手机和平板设备。开发者通常使用Java或Kotlin语言进行编程,并借助Android Studio这一集成开发环境(IDE)来编写、调试和发布应用。 ...

    《最强Android书 架构大剖析》_崔孝晨.pdf

    同时,作者比较了Linux 与Android 系统的区别,并对Android 系统的安全性做了深入的阐述。 《最强Android书:架构大剖析》采用了大量的图表示例和实验,表达新颖清晰,让读者能直观地掌握Android 的技术精髓。 ...

    Android项目之——漂亮的平台书架.zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

Global site tag (gtag.js) - Google Analytics