一、工具的使用
1、學會使用vim/emacs,vim/emacs是linux下最常用的原始碼編輯具,不光要學會用它們編輯原始碼,還要學會用它們進行查詢、定位、替換等。新手的話推薦使用vim,這也是我目前使用的文字編輯器。
2、學會makefile檔案的編寫規則,並結合使用工具aclocal、autoconf和automake生成makefile檔案。
3、掌握gcc和gdb的基本用法。掌握gcc的用法對於構建一個軟體包很有益處,當軟體包包含的檔案比較多的時候,你還能用gcc把它手動編譯出來,你就會對軟體包中各個檔案間的依賴關係有一個清晰的瞭解。
4、掌握svn/cvs的基本用法。這是linux,也是開源社群最常用的版本管理系統。可以去試著參加sourceforge上的一些開源專案。
二、linux/unix系統呼叫與標準C庫
系統呼叫應用軟體與作業系統的介面,其重要性自然不用說,一定要掌握。推薦學習資料為steven先生的UNIX環境高階程式設計(簡稱APUE)。
三、庫的學習
無論是在哪個平臺做軟體開發,對於庫的學習都很重要,linux下的開發庫很多,我主要介紹一下我常常用到的一些庫。
1、glib庫glib 庫是gtk+和gnome的基礎庫,並具是跨平臺的,在linux、unix和windows下都可以用。glib庫對於linux平臺開發的影響就像 MFC對windows平臺開發的影響一樣,很多開源專案都大量的使用了glib庫,包括gimp、gnome、gaim、evolution和 linux下的叢集軟體heartbeat。因為glib庫自帶有基本的資料結構實現,所以在學習glib庫的時候可以順便學習一下基本的資料結構(包括連結串列、樹、佇列和hash表)。
2、libxml庫
libxml是linux平臺下解析XML檔案的一個基礎庫,現在很多實用軟體都用XML格式的配置檔案,所以也有必要學習一下。
3、readline庫
readline 庫是bash shell用的庫,如果要開發命令列程式,那麼使用readline庫可以減少很多工作量,比如bash裡的命令列自動補全,在readline裡就已經有實現,當然你也可以用自己的實現替代庫的行為。readline庫有很多網站介紹的,只要google一下readline就可以找到一堆了。
4、curses庫
curses 庫以前是vi程式的一部分,後來從vi裡提取出來成為一個獨立的庫。curses庫對於編寫終端相關的程式特別有用,比如要在終端某一行某一列定位輸出,改變終端字型的顏色和終端模式。linux下的curses庫用的是GNU實現的ncurses(new curses的意思)。
5、gtk+和KDE庫
這兩個庫是開發GUI應用程式的基礎庫,現在linux下的大部份GUI程式都是基於這兩個庫開發的,對於它們 的學習也是很有必要的。
四、網路的學習
網路這個東西太寬了,推薦學習資料steven先生的UNIX網路程式設計(簡稱UNP)和TCP/IP協議詳解,更進一步的話可以學習使用libnet編寫網路程式。
一、工具的使用
1、學會使用vim/emacs,vim/emacs是linux下最常用的原始碼編輯具,不光要學會用它們編輯原始碼,還要學會用它們進行查詢、定位、替換等。新手的話推薦使用vim,這也是我目前使用的文字編輯器。
2、學會makefile檔案的編寫規則,並結合使用工具aclocal、autoconf和automake生成makefile檔案。
3、掌握gcc和gdb的基本用法。掌握gcc的用法對於構建一個軟體包很有益處,當軟體包包含的檔案比較多的時候,你還能用gcc把它手動編譯出來,你就會對軟體包中各個檔案間的依賴關係有一個清晰的瞭解。
4、掌握svn/cvs的基本用法。這是linux,也是開源社群最常用的版本管理系統。可以去試著參加sourceforge上的一些開源專案。
二、linux/unix系統呼叫與標準C庫
系統呼叫應用軟體與作業系統的介面,其重要性自然不用說,一定要掌握。推薦學習資料為steven先生的UNIX環境高階程式設計(簡稱APUE)。
三、庫的學習
無論是在哪個平臺做軟體開發,對於庫的學習都很重要,linux下的開發庫很多,我主要介紹一下我常常用到的一些庫。
1、glib庫glib 庫是gtk+和gnome的基礎庫,並具是跨平臺的,在linux、unix和windows下都可以用。glib庫對於linux平臺開發的影響就像 MFC對windows平臺開發的影響一樣,很多開源專案都大量的使用了glib庫,包括gimp、gnome、gaim、evolution和 linux下的叢集軟體heartbeat。因為glib庫自帶有基本的資料結構實現,所以在學習glib庫的時候可以順便學習一下基本的資料結構(包括連結串列、樹、佇列和hash表)。
2、libxml庫
libxml是linux平臺下解析XML檔案的一個基礎庫,現在很多實用軟體都用XML格式的配置檔案,所以也有必要學習一下。
3、readline庫
readline 庫是bash shell用的庫,如果要開發命令列程式,那麼使用readline庫可以減少很多工作量,比如bash裡的命令列自動補全,在readline裡就已經有實現,當然你也可以用自己的實現替代庫的行為。readline庫有很多網站介紹的,只要google一下readline就可以找到一堆了。
4、curses庫
curses 庫以前是vi程式的一部分,後來從vi裡提取出來成為一個獨立的庫。curses庫對於編寫終端相關的程式特別有用,比如要在終端某一行某一列定位輸出,改變終端字型的顏色和終端模式。linux下的curses庫用的是GNU實現的ncurses(new curses的意思)。
5、gtk+和KDE庫
這兩個庫是開發GUI應用程式的基礎庫,現在linux下的大部份GUI程式都是基於這兩個庫開發的,對於它們 的學習也是很有必要的。
四、網路的學習
網路這個東西太寬了,推薦學習資料steven先生的UNIX網路程式設計(簡稱UNP)和TCP/IP協議詳解,更進一步的話可以學習使用libnet編寫網路程式。