內 容:
工作幾年來,一直從事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程式設計的書籍裡,《c++ gui programming with qt4》 、 《foundations of qt development 》、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 》。
》和《其它
除了以上幾個類別,還有一些書籍值得推介。
比如《我的Linux書架
工作幾年來,一直從事linux核心驅動方面的開發。從接觸linux到現在,讀過不少linux方面的書籍,現把認為很不錯的一部分列出來和大家分享一下。入門類一直認為,在乙個系統上學習開發之前,首先需要熟悉這個系統的使用。鑑於 的國情,絕大部分人第乙個接觸的作業系統就是windows,因此對於這絕大部分...
我的Linux書架
工作幾年來,一直從事linux核心驅動方面的開發。從接觸linux到現在,讀過不少linux方面的書籍,現把認為很不錯的一部分列出來和大家分享一下。一直認為,在乙個系統上學習開發之前,首先需要熟悉這個系統的使用。鑑於 的國情,絕大部分人第乙個接觸的作業系統就是windows,因此對於這絕大部分人來說...
我的Linux書架
工作幾年來,一直從事linux核心驅動方面的開發。從接觸linux到現在,讀過不少linux方面的書籍,現把認為很不錯的一部分列出來和大家分享一下。一直認為,在乙個系統上學習開發之前,首先需要熟悉這個系統的使用。鑑於 的國情,絕大部分人第乙個接觸的作業系統就是windows,因此對於這絕大部分人來說...