工作幾年來,一直從事Linux內核驅動方面的開發。從接觸Linux到現在,讀過不少Linux方面的書籍,現把認爲很不錯的一部分列出來和大家分享一下。
入門類
一直認爲,在一個系統上學習開發之前,首先需要熟悉這個系統的使用。鑑於天朝的國情,絕大部分人第一個接觸的操作系統就是Windows,因此對於這絕大部分人來說,如果要學習Linux開發,學會使用這個系統都是必不可少的一個環節。
現在的Linux初學者是幸福的,隨着Linux桌面環境越來越易用,入門一個新的系統是非常容易的事情。雖然命令行對於提高工作效率更加有效,但我們完全可以把熟悉命令的過程放到日常使用中進行。無論學習什麼知識,在實踐中學習都是高效而且有趣的。在這個階段,我們也未必一定需要書籍。現在很多Linux發行版的Wiki寫得都非常詳細,在使用某一種發行版時找到相應的Wiki閱讀查詢就可以了。而且,桌面環境變化太快,關於桌面的介紹類書籍幾乎都沒有必要看,這類書籍大多剛一出版就過時了。
那入門類書籍裏哪些比較有價值呢?我比較推薦涉及的技術相對比較穩定的書。比如,Linux基本的體系結構和命令一般都是經久不變的,甚至從上古時期的Unix開始就沒太多變化,這類書籍講解的知識也是以後大幅提高我們的生產力的基礎。比如《
鳥哥的Linux私房菜》,比如《
Unix
Power Tools》(中譯名是“UNIX超級工具”),或者是爲Linux+認證考試準備的《
Linux+ Study Guide》。當然,這一類書籍其實都不必精讀,快速瀏覽之後作爲工具書備查就可以了。
編程類
但是,APUE對於Linux編程初學者似乎稍深了一點,而且很多細節在Linux中並不會用到。講述Linux編程的書籍裏,《
Advanced Linux Programming》應該更加適合初學者。不要被書名中的“Advanced”嚇到,書裏的內容還是很容易理解的。看完這本書再看APUE應該效果會更好。
如果要開發GUI程序,上面兩本書就無能爲力了。在Linux世界裏,最常用的GUI Toolkit是GTK+和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 內核理論和實踐之間的鴻溝,“一橋飛架南北,天塹變通途”。
工具類
工欲善其事,必先利其器。進行Linux開發,相關工具還是需要熟練使用的。比如,GNU Tool Chain、自動構建工具、編輯器、版本控制工具等等。
其它
除了以上幾個類別,還有一些書籍值得推介。