一、工具的使用

  1、vim/emacs是linux下最常用的源碼編輯器,學會使用它們,不光要學會用它們編輯源碼,還要學會用它們進行查找、定位、替換等。

       2、掌握gcc和gdb的基本用法。當軟件包包含的文件比較多的時候,你還能用gcc把它手動編譯出來,你就會對軟件包中各個文件間的依存關系有一個明確了解,所以對構建軟件包是很有幫助的。

  3、學會makefile文件的編寫規(guī)則,并結合使用工具aclocal、autoconf和automake生成makefile文件。

     4、掌握svn/cvs的基本用法。這是linux,也是開源社區(qū)最常用的版本管理系統(tǒng)。可以嘗試參與sourceforge上的一些開源項目。

 二、庫的學習

  無論是在哪個平臺做軟件開發(fā),對于庫的學習都很重要,linux下的開發(fā)庫很多,下面只介紹我們常用的一些庫。

       1、libxml庫

  libxml是linux平臺下解析XML文件的一個基礎庫,現(xiàn)在很多實用軟件都用XML格式的配置文件,所以也有必要學習一下。

  2、glib庫

  glib 庫是gtk+和gnome的基礎庫,并具是跨平臺的,在linux、unix和windows下都可以用。glib庫對于linux平臺開發(fā)的影響就像 MFC對windows平臺開發(fā)的影響一樣,很多開源項目都大量的使用了glib庫,包括gimp、gnome、gaimevolution和 linux下的集群軟件heartbeat.因為glib庫自帶有基本的數據結構實現(xiàn),所以在學習glib庫的時候可以順便學習一下基本的數據結構(包括鏈表、樹、隊列和hash表)。

  3、readline庫

  readline 庫是bash shell用的庫,如果要開發(fā)命令行程序,那么使用readline庫可以減少很多工作量,比如bash里的命令行自動補全,在readline里就已經有實現(xiàn),當然你也可以用自己的實現(xiàn)替代庫的行為。readline庫有很多網站介紹的,只要google一下readline就可以找到一堆了。

  4、curses庫

  curses 庫以前是vi程序的一部分,后來從vi里提取出來成為一個獨立的庫。curses庫對于編寫終端相關的程序特別有用,比如要在終端某一行某一列定位輸出,改變終端字體的顏色和終端模式。linux下的curses庫用的是GNU實現(xiàn)的ncurses(new curses的意思)。

      三、linux/unix系統(tǒng)調用與標準C庫

  系統(tǒng)調用應用軟件與操作系統(tǒng)的接口,其重要性自然不用說,一定要掌握。推薦學習資料為steven先生的UNIX環(huán)境高級編程(簡稱APUE)。

  四、網絡的學習

  網絡上的內容是比較寬泛的,推薦學習steven先生的UNIX網絡編程(簡稱UNP)和TCP/IP協(xié)議詳解,更進一步的話可以學習使用libnet編寫網絡程序。