天天看點

Linux教程:如何在Linux下進行C++開發?

Linux是一類Unix計算機作業系統的統稱,Linux作業系統的核心的名字也是“Linux”, 在Linux下進行C++開發,需要注意許多問題,比如:減少不必要的編輯動作,減少編輯的時間。

  Windows下,開發工具多以內建開發環境IDE的形式展現給最終使用者。例如,VS2005內建了編輯器,宏彙編ml,C /C++編譯器cl,資源編譯器rc,調試器,文檔生成工具, nmake。它們以內建方式提供給最終使用者,對于初學者而言十分友善。

  但是,這種商業模式,直接導緻使用者可定制性差,不利于自動化,內建第三方工具的能力弱。例如,無法定制一些宏來處理一些重複操作;體會不到自動化makefile一步到位快感;無法遠端登入到伺服器上進行開發;無法使用某種”粘合劑”來把第三方工具(例如,文本工具,字元串工具)有效地調用起來。可以說,良好的商業支援和傻瓜式開發,是它們主要的優點。

  在Linux下,C++開發工具被切割成一個個獨立的小工具。各自處理不同的問題。例如,編輯器(emacs, vim)用來進行編輯程式的,調試器(gdb)用來調試程式,編譯器(GCC)用來編譯和連結程式的,性能分析工具(gcov, gprof)用來優化程式的,文檔生成器(doxygen)用來生成文檔的。

  同時,還有一些系統工具和系統知識,我們是很有必要了解的:程式自動化機制 makefile,系統粘合劑shell,系統查找工具grep, locate, find。其它的工具(例如ctags, OCI公司的MPC等等),一旦熟練掌握,它們将成為你手中的利器。

  本文主要是一些針對Linux下開發工具使用的經驗之談。由于,工具品種繁多,我們沒有能力也沒有必要一一介紹。對于Linux下IDE工具,例如 eclipse, anjuta等,它們雖然也很實用,但是使用起來比較簡單,而且目前還算不上主流。是以,它們将不被着重介紹。

  同時,本文也不打算寫成各個工具的操作手冊,隻着眼于介紹各個工具的想要解決的問題、運作機理和主要特性。

  要進行開發,第一件事情就是選擇一個合适的編輯器。編輯器選擇有幾個要素:

1)減少不必要的編輯動作,減少編輯的時間。一切能夠無二義性描述出來的編輯任務,都可以而且應該能被自動化。

  例如,每一個C++開發都會有一個main函數;我們在定義.h檔案時,都希望加入一些預處理指令#define來幫我們解決重複引用同一個頭檔案而帶來的麻煩。滑鼠操作總是比鍵盤操作要慢的。這方面EMACS做得可算是到了極緻。是以, EMACS使用者經常會吹噓:他們編輯的速度等同于他們思考的速度。

  2)可擴充性高。程式員預期的編輯器應該能提供一些程式設計的幫助,例如,文法高亮,自動補齊,自動排版,文法檢查等等。

  留心觀察一下gedit, vim, emacs, ultraEdit,就會發現它們提供的遠不是windows 記事本,寫字闆提供的那麼簡陋的功能。對于一種新的語言,新的文法,它們應該能很友善地提供支援,而不停留在一種或幾種固定的語言上。

  3)使用者可定制性高。如果想長期從事研發, 特别是Linux/unix下研發的話,那麼你很有必要學好一個功能足夠的編輯器。

  有這麼一句話:Linux下程式員分為三種,使用emacs的,使用vi的,還有其它。EMACS是Stallman用lisp語言寫的一個GPL的編輯器。我們這裡所說的emacs指的是GNU emacs,而非Xemacs。

  由于它的開放性,我們可以把它打造成一個功能強大的IDE。我們在安裝好CGYwin之後,也可以在Windows系統下使用 EMACS。CGYwin和MINGW是第三方寫的一個在Windows系統上模拟POSIX系統的工具。

  EMACS與其說的是一個編輯器,倒不如說它是一個作業系統。我們可以用它來寫程式設計,寫wiki,收發郵件等等。C++開發主要是通過兩種方式來進行擴充:el腳本(elisp是lisp的一種方言)和第三方擴充包。EMACS的入門成本很高。

  由于是純鍵盤操作,是以需要記憶大量的快捷鍵;功能強大是通過使用者添加一些擴充包,lisp腳本來實作的。如何正确配置和修改是很需要耐心和技巧的。

繼續閱讀