linux平台C++开发基本知识
最近工作中,需要在linux上開發C++程序。有了下面的問題。
1,linux平臺C++開發和win32 C++開發有什么區別呢?
2,除了C++語言,數據結構等必須的知識外,還需要些了解什么呢?
3,如何在linux平臺開發C++應用程序呢?
相信許多之前沒有開發過linux平臺程序的人也會有這些疑惑。下面,就自身的學習和接觸,簡單介紹一下。由于學習沒多久,大庭廣眾之下也不敢造次。但如果讀完,您覺得沒有白讀,我于愿足矣~
1,linux平臺C++開發和win32 C++開發有什么區別呢?
??? 我們知道,在win32平臺開發程序,你可以使用VB畫個界面,然后為界面編寫事件代碼,就快速地構建了win32程序,或者用C/C++在SDK模式下編程,你可以最大化地定制自己的程序,當然,時間和精力的花費也會很多;或者使用MFC提供的framework來開發;此外,還有很多語言供您使用,比如JAVA,C#等。無論哪一種語言,都有一個非常重要的特征,他們在win32平臺都有一個非常強大的,功能完整的,集合程度高的IDE開發環境。你可以很輕易地在IDE里敲入自己的代碼,無論是不是使用了類庫或者框架,然后呢,按下快捷鍵,比如在VC6中按下CTRL+F5,IDE會直接幫你預編譯,編譯,鏈接,運行。直接就看到結果了。如果您想知道程序每一步是如何運行的,寄存器和內存中某一個狀態都發生了什么,你可以step by step的運行,可以直觀地看到斷點所在,直觀地看到程序某一個變量的值是什么,最重要的是,都是圖形化的顯示。這樣,方便不?舒服不?您可能會像我一樣認為,我天天都這樣用的,已經習慣于此,沒覺得有什么特別的啊。是的,那下面我來用圖片直觀地說明一下問題吧。
? ? 首先,看看win32平臺的vc6.0中,調試一個簡單程序的界面:
我設置了一個斷點,VC用一個紅色的圓點來直觀地描述給我們。就算我們運行到了別的地方,這個圓點還是非常清晰,強烈地告訴我們這里是斷點。在VB中,斷點的那一整行,都會變成紅色,來醒目地提醒我們。
對比地,這里給出在Linux,這里選擇了ubuntu里面使用gdb命令調試(待會介紹它)一個程序,設置斷點的方式:
首先是測試用的簡單程序:
然后用g++編譯它。(這里的g++是GCC中c++編譯器的前端)
然后對生成的可執行程序進行gdb調試,啟動gdb:
用l子命令列出前十行代碼,并用break子命令設置斷點到第9行。如下圖:
請對比一下win32下面的VC的斷點和linux下,gdb的斷點,您更樂意用哪一個?
下面再來看另外一個例子,查看變量值:
上圖中,可以直接使用鼠標來查看,而且IDE會自動跟蹤。那gdb呢?
上圖中,我用r命令運行這個程序,然后到斷點處停止下來,然后用print命令查看。我看到了str的值是hello world!.
您只能敲入命令才能查看,和VC6來比較,哪個方便?不用我多說了吧?
總結一下:linux平臺的C++開發和win32平臺的C++開發相比較,我不能說誰好誰壞,因為各有千秋。不過對于初學者來說,或者說對于我們的工作來說,win32的IDE比較成熟了,很方便。linux下面就相對薄弱一些。但,這些都是壞事么?不盡然,讀完下文,您會意識到,這其實是一種優勢。
2,除了C++語言,數據結構等必須的知識外,還需要些了解什么呢?
??? linux系統之大,牽涉很多方面的開發。正如win32一樣,我們可能開發的是一款游戲,可能是一款帶GUI的通信軟件,或者只是shell中的一個命令,或者是系統的驅動。需要了解的知識不等。對于win32來說,開發游戲要opengl,開發通信軟件,涉及到socket,開發驅動要使用微軟的DDK,諸如此類。我們是網絡部,開發的大多是沒有GUI界面的命令行程序,通常要通信。因此我們需要學習的知識就顯而易見了。不說別的,至少可以應付日常工作了。
? ?首先,我們要了解shell命令吧。可以做日常的文件維護,比如創建,刪除,重命名目錄,文件,修改文件權限,顯示文件內容,編譯文件,安裝軟件包,這類命令當然多多益善。不過不用擔心,其實日常使用到的不多。個人不認為天天背命令就能成高手。命令的參數何其多,汗牛充棟這個成語應該可以形容。掌握框架性的東西,方向性的東西才是重要的,細節問題可以慢慢學習,那是經驗積累的過程。
??其次,一般來說,公司沒有電腦給我們單獨裝一個Linux,所以一般是用虛擬機。個人推薦VMware7.1,網上有中文漢化版,很好很強大。這里也有必要說明一下,不需要去抱個虛擬機的教程天天看,我們用到的很少。這里總結一下,使用vmware安裝完linux之后,需要在選項里開啟共享文件夾,開啟拖拽和復制粘貼,然后網絡選擇NAT方式,配置VMware Network Adapter VMnet8和linux的網卡IP地址位于同一子網段,再安裝一個vm tools,就可以讓虛擬機共享主機的網絡,并且可以在windows和Linux之間進行文件的拖拉,非常方便。這里偷偷告訴你,有時候,我會在windows上用vc調試,然后將代碼拖到Linux,再用g++編譯。很好,很強大。不過,我想該方法只適用于只調用C++標準庫的程序。
??再次,會編寫makefile。makefile是一個文件依賴的規則。還記得前面么?我介紹到,linux IDE不如windows好用,但是命令行很強大,結合makefile,linux將無所不能。您可以完全按照自己的意愿來干,比如,您不必非要按照windows上面的IDE那樣規定的,先編譯,后鏈接,再運行。您可以按照自己的意愿來打亂它們,雖然這可能會出問題。不過,free is everything.
? ?第四,會適用gdb調試器。會它的命令。很多linux上面的IDE其實是內嵌了gdb調試器。比如GNOME的anjuta, KDE的KDeveloper等。
??第五,會使用,善于使用,經常使用man命令。在win32平臺上,我經常參照MSDN,有C/C++標準庫,有API,有MFC的說明,很好用。到了linux,啥都沒有了。MSDN不管用了。怎么辦?起初,我只知道上網查。很慢,很費事。現在我知道了,linux自帶的man命令包含的更全,通過安裝開發包,您可以man出來標準庫,man出來API系統調用等等。而且GNU中國還有一個計劃,是專門翻譯man命令的。您可以關注一下。
? ?最后,我要啰嗦一下,在Linux上面編程,我們能夠運用最多的,非C++標準庫莫屬。特別是STL。功能好好用。也許和我的經歷有關,我有一個壞習慣,碰到一個需求,我喜歡自己去實現這一個結構。比如一個動態的數組,某一個排序等,有些東西如果處處要自己實現,在規定的時限內,可能什么都完成不了。STL解決了這一難題。以前,我寫了一大段代碼完成的功能,它也就兩三句話而已,而且效率很高。我正在學習中,很喜歡它。
3,如何在linux平臺開發C++應用程序呢?
???介紹完了前面的鋪墊知識,敲擊鍵盤敲的指頭都僵了。下面快速地介紹在Linux平臺開發c++程序的步驟吧。
? ?1,使用gedit,或者任何文本編輯器(最好有語法高亮,自動縮進功能)編寫您的代碼。
? ?2,編寫代碼時,使用標準庫的函數和數據結構,或者其它已經實現的模塊,或者linux系統API調用。
? ?3,碰到不知道的標準庫,或者linux API,使用man命令查詢,沒有的話,到網上查詢。
? ?4,編寫makefile.
? ?5,在g++上添加 -g參數,加入調試符號。
? ?6,使用gdb調試或者打印log測試。
? ?7,去掉-g參數,release。
? ?8,結束。
總結一下:您可以參照下列的關鍵詞來尋找資料進一步學習:
GTK, QT, SHELL, GDB, GCC, makefile,STL
全文完~
總結
以上是生活随笔為你收集整理的linux平台C++开发基本知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++面试(三)
- 下一篇: Linux 、shell 时间函数 -