由於C++是一門非跨平台語言,其開發的程序編譯生成的可執行文件,只能在相應的操作系統中被執行,離開此系統環境將無法執行。
主要原因是不同的操作系統,可執行文件的結構不同,最為常見的操作系統是有:MAC,windows,linux,unix。。。。
其中windows下為早期為DOS結構,之后隨着窗口系統的發展改為PE,而linux,以及unix其可執行文件結構為elf。
本文只是剛開始,很多東西都不熟悉,因此在后續的過程中會對開發環境篇進行進一步詳細說明和擴展,爭取以后大多數的平台,以及該平台下常用的C++工具都會用。
本文主要講了四方面內容:
C++與java開發環境的不同,
標准C++學習過程,
C++開發和應用方向,
C++開發的一般思路,
C++開發環境搭建。
==================================================================================
C++與java開發環境的不同
可以說,雖然不同操作系統下,可執行文件結構不同,但是從可執行文件生成,到被加載到內存,然后在內存中布局來看,其一般過程是相似的。
因此,在學習C++等非跨平台語言時,最好先有一個高層面的編程,然后針對不同的操作系統,有不同的開發和編譯環境。如果與java進行比較如下:
開發語言 是否跨平台 linux下編譯器+連接器 windows下編譯器+連接器
C++ 非 gcc,g++等,很多 IDE是有TC,dev,其中最好的是VS,
java 是 linux版jdk,唯一,存在不同版本 windows版jdk,唯一,存在不同版本,IDE有eclipse,netbean等
上面只寫了兩個平台下的環境常見的,其實還有很多,限於本人知識有限無法一一列舉。
不過,這里就個人而言,學習C++開發與應用,在windows下不選VS就是在裝B,因為這是微軟自己出的,還能有比他更好的?那就是在扯蛋。(跑題了)
而linux下可用IDE,也可用vim之類的。
===============================================================================
標准C++學習過程
學習的順序最好是:
1)先在linux下用vim之類學習標准C++語法,這樣書上怎么寫,代碼就是什么樣的。
2)理解C++程序的編譯和連接過程,
3)標准庫的使用。
4)預定義(宏定義,文件引入。。。)
5)C++程序內存布局結構
6)生成可執行文件靜態結構分析
7)程序從磁盤加載到內存開始,整個運行過程,以及最后被清理出內存,整個運行生命周期情況。
=============================================================================
C++開發和應用方向
當將標准C++語言學完,並明確理解以上7個問題后,可以開始進行編程方向的選擇。
主要有以下幾個方向:
1)系統編程
2)應用編程
3)網絡編程
4)嵌入式開發
5)android底層和中間件開發
6)驅動開發
7)游戲工具開發
選擇一個自己喜歡的方向,努力繼續學習下去。
這個時候需要對操作系統和計算機組成原理有相對高的知識和原理層面的要求,因此需要花時間去補充相應的知識點。
==============================================================================
C++開發的一般思路
接到一個需求或是問題,應該是
1)提出解決方案或是設計出來
2)通過定義標准C++相關的接口,以驗證需求。
3)對應完成程序要運行的平台,選擇相應的IDE工具,基於平台的SDK工具,調用其中適合的API來實現接口,最終實現需求。
==============================================================================
C++開發環境搭建
在window下,xp及以下,最高為VS2010,win7可安裝VS2012,要開發win8應用,最好是安裝2012及以上VS
安裝方法:直接安提示next即可實現。
在linux下,由於linux只是一類具有linux內核的系統的統稱,具體有很多版本,隨着發現不同版本之間出現相應的差異,但大部分的命令還是相同或相似的。
這里僅以centos,ubuntu兩個版本來說明C++編輯,編譯,連接,執行過程。
1)都天然自帶gcc,g++,所以基本不用裝了,最多需要更新下庫版本,但標准庫基本無變化,更新的多是系統或系統應用相關的庫
2)編輯,命令行下:vim(vim的使用以后再說)
3)編譯+連接,當前的編譯器都是將連接器整合在一起的,因此,一行命令僅僅需要通過不同的參數來判斷是只編譯還是編譯連接一起做了。
命令:g++ hello.cpp -o hello 或者 g++ -o hello hello.cpp
以上源文件和輸出文件順序無影響
4)執行,在當前目錄下: ./hello 回車即可
如下圖為vim編輯源文件:
下圖為編譯源文件,執行生成可執行文件:
===============================================================================