Linux學習方法

2021-06-11 09:05:19 字數 2269 閱讀 2470

假設你是計算機科班出身,計算機系的基本課程如資料結構、作業系統、體系結構、編譯原理、計算機網路你全修過

我想大概可以分為4個階段,水平從低到高

從安裝使用=>linux常用命令=>linux系統程式設計=>核心開發閱讀核心原始碼

linux常用命令要學會自己編譯核心,優化系統,調整引數。安裝和常用命令書太多了,找本稍微詳細點的就ok,其間需要學會正規表示式

系統程式設計推薦《高階unix環境程式設計》,黑話叫apue,還有《unix網路程式設計》。這時候大概還需要看資料理解elf檔案格式,聯結器和載入器,cmu的一本教材中文名為《深入理解計算機系統》比較好

核心開發閱讀核心原始碼階段,從寫驅動入手逐漸深入linux核心開發

參考書如下《linux device drivers》,黑話叫ldd

《linux kernel development》,黑話叫lkd

《understading the linux kernel》,黑話叫utlk

《linux原始碼情景分析》

這四本書為搞核心的必讀書籍

最後,第三階段和第四階段最重動手,空言無益,光看書也不罩,不動手那些東西理解不了。

學習linux/unix程式設計方法的建議

建議學習路徑:

首先先學學編輯器,vim, emacs什麼的都行。

然後學make file檔案,只要知道一點就行,這樣就可以準備程式設計序了。

然後看看《c程式語言》k&r,這樣呢,基本上就可以進行一般的程式設計了,順便找本資料結構的書來看。

如果想學習unix/linux的程式設計,《apue》絕對經典的教材,加深一下功底,學習《unp》的第二卷。這樣基本上系統方面的就可以掌握了。

然後再看douglus e. comer的《用tcp/ip進行網際互連》第一卷,學習一下網路的知識,再看《unp》的第一卷,不僅學習網路程式設計,而且對系統程式設計的一些常用的技巧就很熟悉了,如果繼續網路程式設計,建議看《tcp/ip進行網際互連》的第三卷,裡面有很多關於應用協議telnet、ftp等協議的程式設計。

如果想寫裝置驅動程式,首先您的系統程式設計的介面比如檔案、ipc等必須要熟知了,再學習《ldd》2。

對於幾本經典教材的評價:

《the c programing language》k&r 經典的c語言程式設計教材,作者是c語言的發明者,教材內容深入淺出。雖然有點老,但是必備的一本手冊,現在有時候我還常翻翻。篇幅比較小,但是每看一遍,就有一遍的收穫。另外也可用譚浩強的《c語言程式設計》代替。

《advanced programing in unix envirement》 w.richard stevens:也是非常經典的書(廢話,stevens的書哪有不經典的!),雖然初學者就可以看,但是事實上它是《unix network programing》的一本輔助資料。國內的翻譯的《unix環境高階程式設計》的水平不怎麼樣,現在有影印版,直接讀英文比讀中文來得容易。

《tcp/ip祥解》一共三卷,卷一講協議,卷二講實現,卷三講程式設計應用。我沒有怎麼看過,但是據說也很經典的,因為我沒有時間看卷二,所以不便評價。

《用tcp/ip進行網際互連》douglus.e.comer 一共三卷,卷一講原理,卷二講實現,卷三講高階協議。感覺上這一套要比stevens的那一套要好,就連stevens也不得不承認它的第一卷非常經典。事實上,第一卷即使你沒有一點網路的知識,看完以後也會對網路的來龍去脈瞭如指掌。第一卷中還有很多習題也設計得經典和實用,因為作者本身就是一位教師,並且卷一是國外研究生的教材。習題並沒有答案,留給讀者思考,因為問題得答案可以讓你成為乙個中級的hacker,這些問題的答案可以象douglus索取,不過只有他只給教師卷二我沒有怎麼看,卷三可以作為參考手冊,其中地例子也很經典。如果您看過qterm的源**,就會知道qterm的telnet 實現部分大多數就是從這本書的源**過來的。對於網路原理的書,我推薦它,而不是stevens的《tcp/ip祥解》。

《operating system - design and implement》這個是講作業系統的書,用minix做的例子。作者母語不是英文,所以英文看起來比較晦澀。國內翻譯的是《作業系統設計與實現》,我沒看過中文版,因為翻譯者是尤晉元,他翻譯的《apue》已經讓我失望頭頂了。讀了這本書,對作業系統的底層怎麼工作的就會有乙個清晰的認識。

《linux device driver》2e ,為數不多的關於linux裝置驅動程式的好書。不過內容有些雜亂,如果您沒有一些寫驅動的經驗,初次看會有些摸不著南北。國內翻譯的是《linux裝置驅動程式》第二版,第一版,第二版的譯者我都有很深的接觸,不過總體上來說,雖然第二版翻譯的有些不盡人意,但是相比第一版來說已經超出了一大截。要讀這一本書,至少應該先找一些《計算機原理》《計算機體系結構》的書來馬馬虎虎讀讀,至少應該對硬體和計算機的工作過程有一些了解。

Linux學習方法

如果您是非計算機相關專業零基礎兄弟,在學習linux程式設計基礎之前,建議先學習計算機基礎 linux作業系統基礎知識和計算機網路基礎知識。計算機基礎知識包括了很多常識性的內容,學了不一定有用,但是如果對一些基本常識不了解,可能會鬧笑話。總的來說,以學習概念和擴充知識面為主,不要深入理論,不要學習演...

Linux學習方法

如果您是非計算機相關專業零基礎兄弟,在學習linux程式設計基礎之前,建議先學習計算機基礎 linux作業系統基礎知識和計算機網路基礎知識。計算機基礎知識包括了很多常識性的內容,學了不一定有用,但是如果對一些基本常識不了解,可能會鬧笑話。總的來說,以學習概念和擴充知識面為主,不要深入理論,不要學習演...

掌握 Linux 學習方法

如果你愛好學習知識,尤其是linux作業系統知識,隨著linux應用的擴充套件,許多朋友開始接觸linux,可你不知道去 找到這些知識,來這裡,讓你更加了解linux學習方法。讓你全面掌握linux學習方法。通過linux的學習掌握unix的目的想必不用多說了,在這個網路人才身價倍增的年代,想靠技術...