1. 程式人生 > >Linux開發的一些個人經驗

Linux開發的一些個人經驗

最近的文章總是談論具體的技術,今天來和大家分享一下個人在Linux開發中總結的一些方法,僅供參考。如果存在沒有涉及到問題,可以一同討論。

忘記API的使用怎麼辦?

Windows開發有MSDN可以參考,Linux同樣有開發者手冊可以使用,這就是man命令,Linux的man手冊總共有9個章節,每個章節包含的內容可以通過man man命令進行了解。

對於Linux應用開發,常用1,2,3三個章節,分別對應shell命令手冊,系統呼叫手冊和庫呼叫手冊。例如我們檢視系統呼叫open函式,可以終端輸入man 2 open進行檢視。其中會包括對介面的介紹,需要包含的標頭檔案以及引數說明等等。man手冊非常詳細,也是大家學習API的重要資料。

開發使用C標準庫函式還是使用系統呼叫?

在Linux開發時,有時候既可以使用系統呼叫也可以使用C語言標準庫的函式,例如,開啟檔案的系統呼叫是open,C語言標準庫則提供了fopen函式。那麼我們到底該使用系統呼叫還是標準庫呢?

如果能夠保證程式只會在類UNIX系統下執行,能夠使用系統呼叫的場合,應該優先使用系統呼叫。不可否認,使用系統呼叫會增加開發負擔,需要我們考慮很多細節問題,但是標準庫會做很多我們並不清楚的額外操作。例如檔案io,標準庫預設會進行緩衝,而標準庫預設無緩衝。為了避免不必要的麻煩,還是使用系統呼叫更好,這樣我們可以更好地掌控程式的行為,還能獲得更好的效能。

但是,我們的程式可能會在不同的平臺執行,例如Windows和Linux下,那麼,C語言標準庫可以帶來很好的可移植性。這時候,我們要儘可能的使用C語言標準庫的函式來進行開發。不得不使用系統呼叫的地方,可以使用巨集定義進行區分。

如何減少重複性的工作?

這裡的重複性工作不僅僅指編碼工作,還包括我們使用電腦進行開發相關的各種操作,比如複製檔案,開啟開發軟體,進入一個目錄做一些操作然後到另一個目錄執行另一些操作,提交程式碼到版本管理等等。

諸如此類操作,我們都可以總結自己的操作,提煉出引數和流程,編寫自己的指令碼工具。這就要求我們至少掌握一種主流的Linux下的指令碼語言,如Shell,Python,Perl,Ruby等。養成編寫指令碼的習慣,可以使用一個命令完成自己常用的操作流程,可以減少很多點選滑鼠和切換目錄的操作。

什麼時候使用終端?

現在Linux的發行版都會提供一個桌面環境,桌面環境十分方便,這主要面向使用ubuntu的普通使用者,對於開發者,在必要的時候,還是使用終端會更好一些。例如,複製一個檔案,使用終端一個cp命令解決。所以,個人建議,如果做開發,儘可能使用終端命令來完成自己需要的操作。

我們沒有必要刻意學習什麼命令,需要的時候,通過搜尋和man來了解相關命令的使用方法,常用的命令自然會熟記於心。或者將複雜的使用寫進一個指令碼,以後執行指令碼即可。

是否應該在Linux系統下工作?

如果只是做Linux開發,建議最好在Linux下工作,不太建議在Windows下編碼,使用Linux虛擬機器進行編譯的行為。畢竟,在開發過程中,我們可能會遇到很多的問題,而這些問題直接在Linux下解決可能會更好。作為Linux開發者,最好鍛鍊自己使用Linux系統作為自己的第一作業系統,使用作業系統的過程,也是自己體會作業系統設計理念以及開發理念的過程。

當使用系統遇到問題的時候,嘗試著在網上找找方法和工具,Linux是開源的系統,應當相信,在Windows下的工具軟體,在Linux下都會找到免費的甚至是更好用的替代軟體。例如Windows下載使用迅雷,但是Linux下有uget+aria2的組合,更關鍵的,它是完全免費的。藉助於各種工具,你的Linux系統會異常強大。

如果不得不使用Windows下的軟體,Linux下還有一個wine,使用wine可以在Linux下安裝和執行Windows系統的軟體。

是否使用IDE?

這是一個存在爭議的話題,Linux開發的大牛級人物常常使用vim,emace等文字編輯器進行開發,熟練使用這種開發方式會帶來極高的效率。

但是,對於vim這類文字編輯器,學習曲線比較陡峭,而且進行合乎自己習慣的配置又是一項大工程。不過,需要說明的是個人並不排斥使用vim,在工作中對於一些隨手進行的文件編輯工作,都是使用vim解決的(這類問題我一般不用gedit)。

開發中,個人建議還是選擇一個自己比較熟悉的IDE比較好,開發和除錯都可以從IDE獲利不少,而且能夠減少程式碼中的缺陷。Linux系統下C/C++開發可以使用Eclipse和QtCreator。個人更偏向於使用Eclipse,原因很簡單,外掛豐富,支援的專案種類更齊全(makefile,automake,cmake等),可以進行交叉編譯,而且還支援Java,Python等其他開發,需要的只是相應的外掛。

總的來說,一切有利於提高我們開發效率,保證程式碼質量的手段都可以嘗試,沒有必要將自己限制在是否使用IDE的問題上,選擇自己適合的,就是最好的。