個人Linux書架

原文地址www.cnblogs.com/wwang/archive/2011/01/27/1944406.htmlhtml

工做幾年來,一直從事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內核都很是有幫助的。雖然中文名被譯爲《深刻理解計算機系統》(這個譯名很不貼切),但相比之下,爲何會讓人感受國內的同類教材更加「深奧」 呢?也許,這就是做者功力的差距吧。
相關文章
相關標籤/搜索