日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GCC for Win32开发环境介绍

發(fā)布時間:2023/12/18 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GCC for Win32开发环境介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


GCC for Win32開發(fā)環(huán)境介紹(1)


第一章 在視窗操作系統(tǒng)下的GCC

第一節(jié)GCC家族概覽


GCC是一個原本用于Unix-like系統(tǒng)下編程的編譯器。不過,現(xiàn)在GCC也有了許多Win32下的移植版本。所以,也許對于許多Windows開發(fā)者來說,GCC還是一個比較陌生的東西。所以,我希望通過這章的敘述,讓你——一個Windows開發(fā)者對GCC這一個優(yōu)秀的編譯器有一個大概的了解。


歷史

GCCGNU公社的一個項目。是一個用于編程開發(fā)的自由編譯器。最初,GCC只是一個C語言編譯器,他是GNU C Compiler 的英文縮寫。隨著眾多自由開發(fā)者的加入和GCC自身的發(fā)展,如今的GCC以經(jīng)是一個包含眾多語言的編譯器了。其中包括C,C++,Ada,Object CJava等。所以,GCC也由原來的GNU C Compiler變?yōu)?/span>GNU Compiler Collection。也就是GNU編譯器家族 的意思。當(dāng)然,如今的GCC借助于他的特性,具有了交叉編譯器的功能,即在一個平臺下編譯另一個平臺的代碼。

直到現(xiàn)在,GCC的歷史仍然在繼續(xù),他的傳奇仍然被人所傳頌。


Windows下的GCC家族


起初,GCC是用于Unix,Unix-like系統(tǒng)的編譯器。不過,現(xiàn)在Windows下也出現(xiàn)了GCC的穩(wěn)定移植版。這要感謝Internet上眾多程序員的共同努力。

如今,在Windows下比較流行的GCC移植版主要有三個。他們是MinGW,CygwinDjgpp。雖然,Djgpp是應(yīng)用于DOS系統(tǒng)的,考慮到windowsDOS的兼容,所以也將Djgpp納入其中了。

總體來說,MinGWCygwinDjgpp各有特色,針對不同的應(yīng)用場合,可以選擇不同的移植版來滿足需要。MinGW這個系列的移植,主要方向是讓GCCWindows移植版能使用Win32API來編程。而Cygwin的目標(biāo)是能讓Unix-like下的程序代碼在Windows下直接被編譯。至于Djgpp,則是想讓DOS下也能用上GCC 所以,對于開發(fā)人員不同的需求。選擇合適的移植版會讓工作變得輕松而高效。


本書的GCC


我個人對GCC的移植版都非常喜歡。不論是MinGW還是Cygwin,亦或是Djgpp。在本書中,除了特殊說明以外,所述的內(nèi)容適合所有這三種移植版。 不過,考慮到現(xiàn)在在Windows下用的比較多的是MinGW系列。再加上MinGWCygwinDjgpp安裝和使用更為簡便。所以,建議讀者學(xué)習(xí)時還是使用MinGW



第二節(jié) 入鄉(xiāng)隨俗的MinGW


簡介

MinGWMinimalistic GNU for Windows的縮寫。她是一個建立在GCCbinutils項目上的編譯器系統(tǒng)。和其他GCC的移植版相比,她可以說是最接近Win32的一個了。因為,MinGW幾乎支持所有的Win32API,這也是MinGW的特色之一。她所連接的程序,不需要任何第三方庫就可以運行了。在某種程度上看,MinGW更像是VC的替代品。


獲得與安裝

MinGW可以從MinGW的官方網(wǎng)站http://www.mingw.org上獲得。

如果,你要安裝MinGW,那么你有兩種安裝方案。下面我來一一介紹。


安裝方案一:

首先,你要從http://www.mingw.org/download.shtml上下載如下幾個壓縮包。考慮到文件的更新和文章的靈活性。我將只寫出文件的主要部分,將省去版本好和更新日期。


gcc-core C語言編譯器
gcc-c++ C++語言編譯器
mingw-runtime MinGW的運行時庫(這個必須安裝)

win32api

win32API函數(shù)頭文件和連接庫

binutils

MinGW的匯編器和連接器等基礎(chǔ)工具

gdb

MinGW中的調(diào)試工具
mingw32-make Make工具,用以更好的管理你的項目


然后,將上述文件逐一下載,然后全部解壓縮到一個目錄下就可以了,我這里假設(shè)你是移動到$(MINGW)這個目錄下了。這樣,你的MinGW就算安裝成功了。

最后到DOS終端上,將當(dāng)前目錄轉(zhuǎn)換成$(MINGW)/bin 下。輸入


C:/>gcc -v


看到一段gcc的版本信息,這就能說明,你的gcc已經(jīng)可以正常工作了。


安裝方案二:

你可以從http://www.mingw.org/download.shtml上下載 MinGW5.0.2.exe這個程序。至少,在我寫此文的時候,這個是最新版本。

下載以后運行安裝,至于安裝過程,我想我就不一一介紹了。對于Windows下的開發(fā)人員,我想這個應(yīng)該不是什么問題了。 在一切都選擇好以后。這個程序就開始從Internet上下載所需要的壓縮包。然后,逐一解開,安裝。


總體來說,兩種方法各有長處。不過,本人偏愛第一中方法。因為,控制度高,而且,更新也比較簡單。自己心里也比較明了。


環(huán)境設(shè)置:


對于我們這些使用者來說,最好是能夠簡單方便的使用工具。所以,我們就需要設(shè)置環(huán)境,便于我們使用MinGW

對于設(shè)置,我們只需要在環(huán)境變量中的PATH變量中,添加$(MINGW)/bin這個路徑就可以了。


這樣,你就可以在任何目錄下使用MinGW了。



第三節(jié) 人在曹營心在漢的Cygwin


介紹


Cygwin,其實并不是一個GCC。她是讓Windows擁有Unix-like環(huán)境的軟件。所以,GCC自然也就會包含在里面。不過,對于開發(fā)者,Cygwin是一個開發(fā)環(huán)境。而對于用戶來說Cygwin是一個運行環(huán)境。 Cygwin唯一和MinGW最大的區(qū)別在于,使用Cygwin可以在Windows下調(diào)用Unix-like的系統(tǒng)函數(shù)。比如進(jìn)程函數(shù),等等。所以,雖然說,Cygwin是運行在Windows下的,但是她還是使用的是Unix-like系統(tǒng)的函數(shù)和思想。


獲得與安裝

Cygwin可以從Cygwin的官方網(wǎng)站獲得安裝程序http://www.cygwin.com/

在網(wǎng)站上下載Cygwin的安裝程序setup.exe。然后運行便可以了。 關(guān)于前面的設(shè)置,我想不用多做介紹了。因為,對于這些我想Windows下的開發(fā)人員應(yīng)該相當(dāng)清楚了。

在到了選擇安裝的組件時,在Devel選項下,將gcc-core,gcc-g++等前的skip點擊成你所需要的版本號。

然后在Lib選項卡中,將glib2,glib2-devel,glib2-runtime前的skip點成版本號。

接下來,就點擊next就可以了。在一段漫長的等待時間后,你的Cygwin開發(fā)環(huán)境就算安裝好了。 相對來說,Cygwin的安裝和配置都比較簡單。因為,Cygwin提供了一個比較健全的安裝程序。


使用


在安裝目錄下,運行cygwin.bat就可以啟動cygwin環(huán)境了。這是一個模擬Linux的環(huán)境,所以很多地方可能和Dos有比較大的差距。不過,你編譯出的程序可以直接在其他沒有安裝Cygwin的機器上運行。還有,如果要切換到windows下的其他盤下,比如D盤。那么就可以使用


$cd /cygdrive/d/


對于Cygwin更多關(guān)于使用的內(nèi)容,你可以到Linux社區(qū)去獲得參考。


第四節(jié) 腳踏兩只船的Djgpp

介紹


Djgpp,是一個在純Dos下的GCC移植版本。她使用一些軟件將純Dos設(shè)置成32位的環(huán)境,并運行由她編譯出來的程序。總體來說,Djgpp并不是一個Windows的移植版。不過,她確實可以在Windows下運行。對于一些特殊應(yīng)用。Djgpp是唯一適合的。


獲得與安裝

Djgpp,可以從Djgpp的官方網(wǎng)站上下載http://www.delorie.com/djgpp/

不過,這里Djgpp為用戶做了更好多的安排。她為用戶提供了一個定制安裝的頁面。 http://www.delorie.com/djgpp/zip-picker.html 您只需要在上面填寫響應(yīng)的內(nèi)容,然后遞交。她將會給你一份完整的安裝方案。


使用


相對來說,Djgpp我并不是經(jīng)常使用。所以,本文中在沒有特殊說明情況下,不會使用Djgpp的。



文外音:

總體來說,這篇文章寫的有些匆忙。所以可能有些地方有不足。所以,希望各位能夠多多原諒批評和指教。下一章,我將介紹GCC for Win32IDE。同時,從這一章開始,我將向各位讀者做一個小小的要求。那就是,希望你們能夠?qū)⒆约簩@篇文章感到的不足告訴我,我將隨時修改以發(fā)表的內(nèi)容,以適合廣大讀者的要求。如果各位有什么想法或者意見,疑惑。希望您能到http://blog.csdn.net/visioncat上提出。




上文回顧:

在上文中,我們了解的windows下的GCC編譯器。這一章我們將來看IDE的介紹了。在此,我還要為各位表示抱歉,因為那么久才寫出這篇文章。


GCC for Win32開發(fā)環(huán)境介紹(2)


第二章GCC的外衣——IDE環(huán)境


第一節(jié)IDE for GCC概覽


IDE,即Integrated development environment,也就是綜合開發(fā)環(huán)境。對于習(xí)慣使用VCwindows程序員來說,在windows下,GCCIDE也許就比較陌生了。所以,想通過這一章簡單介紹一下GCC所使用IDE

GCCIDE是什么?

IDE,也就是 綜合開發(fā)環(huán)境 。她是為了便于程序員開發(fā),管理項目的軟件。對于C/C++來說,她主要包括四個部分。代碼編輯器,編譯連接器,調(diào)試器和工具庫。而GCC本身就包含了編譯連接器,調(diào)試器和工具庫。所以,嚴(yán)格的說,GCCIDE主要功能就是一個代碼編輯器,是用于編寫代碼的軟件。

所以,從上面我們可以看到一個問題,那就是支持工具庫的不是IDE,而是編譯器。如果你使用不同的IDE開發(fā)項目,只要你使用的編譯器是相同的,那么她就能支持相同的工具庫。

Windows下的為GCC設(shè)計的IDE有那些?

許多GCCIDE,畢竟不是商業(yè)化制作的,因此很多地方都有不足的地方。下面是我個人認(rèn)為不錯的幾個IDE

Dev-C++,這個IDE可謂是專門為GCC所設(shè)計的IDEVisual-MinGW,一個模仿VC6.0界面的IDE。最后是最近最火的Code::Blocks,由于也是最近接觸,所以也不是太了解,不過,給人的第一印象是,特別像VC.Net的界面。

總體來說,各個IDE都有其自身的特點。對于初學(xué)者,Dev-C++比較不錯,因為各種工具庫基本都有為Dev-C++設(shè)計的安裝包。對于從VC轉(zhuǎn)形到GCC的人來說,Visual-MinGW是一個不錯的選擇,因為據(jù)我所知,大家熟悉和喜愛的還是VC6.0居多,因此模仿VCVisual-MinGW是一個不錯的選擇。對于打算用GCC開發(fā)項目的人來說,Code::Blocks的確會成為你的最愛,因為她的項目管理實在是太優(yōu)秀了。其實,每個人都會從中找到適合自己的IDE

本書的IDE

本書使用哪種IDE呢?其實,本書不是專門為哪種IDE所寫的。因此,本書所寫的都是針對GCC本身所寫的。因此,本書中的IDE。其實就是windows下最不起眼的notepad。不過,為了書寫便捷,我通常使用Emacs或者Notepad++來書寫代碼。Emacs是一個Unix環(huán)境下優(yōu)秀的編輯軟件,Notepad++是一個notepad增強版,個人感覺比較適合開發(fā)程序。本書會在每個例子程序后附帶一個Makefile文件,通過這個文件各位就能夠非常直接的了解到環(huán)境的配置方式,然后根據(jù)不同的IDE為你的程序添加不同的參數(shù)。


第二節(jié) 最專一的Dev-C++


簡介

Dev-C++,全稱Bloodshed Dev-C++,是由Bloodshed公司開發(fā)的一款C/C++IDE。她所默認(rèn)的編譯器為MinGW,但是她能夠支持Cygwin等其他任何GCC的移植版以及GCC本身。她是使用Delphi開發(fā)的,因此有些C/C++開發(fā)者覺得她的血統(tǒng)不純。但是我個人認(rèn)為,只要適合的,我們又何必在意她用什么開發(fā)呢?

獲得與安裝

Dev-C++,可以從她的官方網(wǎng)站http://www.bloodshed.net上獲得。在官方網(wǎng)站的下載頁上,你將會看到三個安裝程序。下面我一一解釋一下。

Dev-C++ with Mingw/GCC這個是包含MinGW的安裝包。安裝這個包以后,你將擁有完整的一個IDE開發(fā)環(huán)境,自然包括編譯器等。

Dev-C++ executable only這個是只有IDE的安裝程序,其中不包括任何編譯器。所有,如果你沒有安裝GCC編譯器的話,安裝這個包以后你將會出現(xiàn)無法編譯項目的問題。

Dev-C++ source code這個是源代碼包,當(dāng)然其中只有Dev-C++的代碼,沒有任何GCC的代碼。

通常偷懶的人選擇Dev-C++ with MinGW/GCC這個包,這個也是我建議初學(xué)者安裝的包。如果,你在上一章以后,已經(jīng)安裝了某個GCCwindows移植版,那么你可以選擇Dev-C++ executable only這個包。如果你想研究一下Dev-C++的代碼,并且對Delphi有所了解,那么Dev-C++ source code是你唯一的選擇。

下面我對Dev-C++ executable only的安裝方式進(jìn)行說明。而Dev-C++ with MinGW/GCC的安裝和她差不多,只是可以省去后面配置編譯器的問題。

安裝

首先,從官方網(wǎng)站下載Dev-C++。運行安裝程序以后,您將看到如下的提示。

這個是讓你選擇安裝時候所使用的語言這里,我們只能選擇English,因為沒有中文安裝界面。

這個是許可證界面,選擇I Agree。感覺現(xiàn)在大家用盜版用多了,對于許可證都不關(guān)心了,可是我想作為一名開發(fā)者,應(yīng)該對許可證的內(nèi)容重視一下,畢竟你的軟件也是要被人使用的。

這個是安裝選項界面。其中,你可以選擇你所要安裝的內(nèi)容和安裝的一些選項,比如是否關(guān)聯(lián)文件等。如果你下載的是Dev-C++ executable only,那么你將無法使用Mingw compiler system(binaries,headers and libraries)這個選項,因為這個安裝文件中沒有包含這個。

這個界面是讓你選擇安裝路徑。你可以在這里選擇你安裝Dev-C++的路徑。我這里假設(shè)你安裝在$(DEV)下。

這個界面是詢問你是否為windows上的所有用戶安裝Dev-C++。這里,我選擇 否。如果你想讓本地機上,每個用戶都可以使用Dev-C++,那么你可以選擇 是。

在安裝程序結(jié)束后,默認(rèn)會運行Dev-C++。你在首次運行時,會看到如下界面。

這個是選擇你Dev-C++所使用的語言,界面圖標(biāo)和窗口風(fēng)格。如圖上選擇,我們使用的語言是中文,使用New Look圖標(biāo),并使用XP風(fēng)格的窗口。

這個是詢問你是否要Dev-C++提供函數(shù)補全功能,她將從頭文件中讀取函數(shù)頭,然后為你補全。但是要消耗一定的CPU時間。如果,你的機器還可以的話,并且需要此功能那么你可以嘗試一下。

至此,我們的Dev-C++算是安裝成功了。如果,下載的是Dev-C++ with MinGW/GCC,那么后面的內(nèi)容你可以不關(guān)心了。因為,你的IDE環(huán)境已經(jīng)全都配好了。如果不是,那么您還需要自己安裝編譯器。

配置編譯器

按照我第一章所介紹的,安裝好某一個GCC移植版編譯器,可以是MinGW,也可以是Cygwin。假設(shè),您安裝的目錄為$(GCC),那么請將如下路徑添加到系統(tǒng)變量PATH后。

$(GCC)/bin;

這樣,你的Dev-C++就擁有了編譯器了。當(dāng)然,你也可以從Dev-C++的網(wǎng)站上下載MinGW全套的Dev包,然后用Dev-C++帶的包管理程序安裝MinGW


添加新的工程類型

在平時,我們通常會建立自己的工程文件。但是,如果每次都要自己設(shè)置環(huán)境變量,編譯器參數(shù)未免也太麻煩了。本處就要介紹,如何將自己定義的工程類型,添加到Dev-C++的新建工程選項里。就如下圖所示,

Dev-C++的項目模板文件,保存在安裝目錄的Templates目錄下。文件以template后綴結(jié)尾,你可以用記事本打開。下面我們一起來建立一個自己的項目。

templates目錄下新建一個名為MyProject.template的文本文檔。內(nèi)容如下:

[Template]

ver=1

Name=MyProject

Icon=0

Description=一個小小的測試

Catagory=HOME


[Unit0]

CName=main.c

C=MyProjectC.txt


[Unit1]

CName=myProject.h

C=MyProjectH.txt


[Project]

UnitCount=2

Type=1

IsCpp=0

Compiler=-DPASSWORD

Linker=-O2

Name=My Project

ProjectIon=0

[Template]

標(biāo)簽后的內(nèi)容是對項目的介紹。

Ver

變量是Template文件的版本,這邊默認(rèn)是1不要更改。

Name

變量是項目的名稱

Icon

變量是項目圖標(biāo)的路徑,如果沒有那么就寫0

Description

變量是對這個模板的介紹。

Category

變量是這個項目屬于哪種項目,這里我們自己建立了一個名為Home的類型。

[Unitx]

其中x為從0開始的任何整數(shù),是定義項目中所包含的文件。

CName

變量是說明這個文件在項目保存時默認(rèn)的文件名。(C語言時使用)

C

變量是Cname文件的源文件。(C語言時使用)

CppName

變量同Cname變量,只是在C++語言時使用。

Cpp

變量同C變量,是在C++語言時使用的。

[Project]

標(biāo)簽是對工程的總體介紹

UnitCount

變量是說明整個項目有多少文件,從1開始。

Type

變量是告訴IDE這個項目采用何種編譯方式。0windows窗口程序,1為控制臺程序,2為靜態(tài)連接庫,3為動態(tài)連接庫。

IsCpp

變量是說當(dāng)前項目是否只能使用C++語言,0表示不是,1表示是。

Compiler

變量是編譯器參數(shù)

Linker

變量是連接器參數(shù)

Name

變量是項目的名稱

ProjectIcon

變量是項目編譯以后,主程序的圖標(biāo)文件。

下面給出了MyProjectC.txtMyProjectH.txt的內(nèi)容。

//MyProjectC.txt

#include <stdio.h>

#include <stdlib.h>

#include "myProject.h"

int main(int argc,char *argv[]){

printf("%s/n",S);

return(0);

}



//MyProjectH.txt

#ifdef PASSWORD

#define S "Hello World"

#else

#define S "NO PASSWORD"

#endif

重新啟動Dev-C++,在你的項目中就存在了我們的項目。

最后的內(nèi)容

相對來說Dev-C++的功能還是比較簡單的。而且,界面也是屬于中文的。所以,慢慢摸索你一定可以熟悉這個環(huán)境的。

文外音:

總的來說,Dev-C++是一個不錯的IDE。很適合對GCC不是太了解的人使用。當(dāng)然,這里我還是要表示抱歉,因為最近要忙于考試,所以遲遲沒有推出這篇文章。現(xiàn)在經(jīng)歷了漫長的考試時間,我在放假的剛開始,就匆匆寫出了一些,趕緊貼出來。這里我還是希望各位能提出一件和疑問。如果各位有什么想法或者意見,疑惑。希望您能到http://blog.csdn.net/visioncat上提出。謝謝。


上文回顧:

在上一篇文章中,我們了解的IDEDev-C++。這篇文章中,我將帶領(lǐng)各位繼續(xù)我們的IDE之旅。繼續(xù)介紹Visual-MinGWCode::Blocks。希望這些IDE能給各位在工作和學(xué)習(xí)中帶來便利。



GCC for Win32開發(fā)環(huán)境介紹(3)


(第二章GCC的外衣——IDE環(huán)境)


第三節(jié) 最臉熟的Visual-MinGW



簡介


Visual-MinGW是一個專門為MinGW所設(shè)計的IDE。如果,你曾經(jīng)用過VC++ 6.0這個IDE,你的第一感覺就是,Visual-MinGWVC++ 6.0非常相似。所以,對于曾經(jīng)用慣VC的朋友們來說,Visual-MinGW不失是一個好的選擇。然而,Visual-MinGW的開發(fā)與更新似乎并不積極。因此,還有不足的地方。Visual-MinGW的理念是提供一個高效的,快速的創(chuàng)建代碼的IDE


獲得與安裝


Visual-MinGW可以從他的官方網(wǎng)站http://visual-mingw.sourceforge.net獲得。在官方網(wǎng)站上,您將看到有DevelopmentVisual-MinGW兩個下載選項。這里,我只以Visaul-MinGW的下載項為例。Visual-MinGW是一個不包含MinGW編譯器的安裝程序。


安裝


首先,從官方網(wǎng)站下載前面所說的安裝程序,然后運行。基本的安裝步驟和Dev-C++類似。由于沒有什么選項。我們這里就不一一舉例了。

接著,我們運行Visual-MinGW。在第一次運行時,我們將看到如下對話框。

這是詢問你,是否關(guān)聯(lián)相關(guān)文件。也就是讓Visual-MinGW成為默認(rèn)的文件編輯器。

這個對話框是告訴你,需要將MinGW的目錄設(shè)置進(jìn)你的Compiler目錄。

如果,你安裝了MinGW。那么你在這里就可以設(shè)置了。我假設(shè),你的MinGW安裝在$(MinGW)目錄下。那么在Compiler Path前打勾,并將$(MinGW)添加上去。

如此,你的Visual-MinGW就算設(shè)置好了。如果,你沒有安裝MinGW,那么你可以查看第一章的內(nèi)容。這里,我就不多做介紹了。


配置


如果,你需要改變編譯器所在的目錄。可以使用如下方法調(diào)用設(shè)置界面。

在菜單欄選擇File -> Preferences.. -> Environment這樣,你就開啟了設(shè)置界面。這里的設(shè)置,和第一次運行的設(shè)置一樣。


使用


其實,Visual-MinGW的使用方式和VC非常類似。基本熟悉VC的朋友。一定對Visual-MinGW不會陌生的。所以,在這里我就不詳細(xì)介紹了。不過,可惜的是,Visual-MinGW似乎不能添加自己的項目類型。所以,這也給我們帶來了不少不便。





第四節(jié) 最新穎的Code::Blocks



簡介


Code::Blocks不只是GCC的一個IDE,也可以支持其他的編譯器,比如MS-VC,Borland C++等等。所以,總體來說Code::Blocks并不是某個編譯器的特屬IDECode::Blocks的界面設(shè)計很像VC.net的界面。從效果上看的確不錯。而且,這個IDE支持插件功能,你可以從他的官方網(wǎng)站上獲得這個IDE的插件和相關(guān)的幫助。


獲得與安裝


Code::Blocks你可以從他的官方網(wǎng)站http://www.codeblocks.org獲得。在官方網(wǎng)站上,有兩種版本下載,一種是帶編譯器的,一種是不帶的,我們可以從文件的體積來分辨這些。這里,我下載的是不帶編譯器的。當(dāng)然,帶編譯器的安裝方式也類似。


安裝


在網(wǎng)上下載Code::Blocks后,雙擊運行安裝。

上面是安裝的歡迎界面

這個是Code::Block的許可證界面。這里,軟件用了GPL,這就說明你可以免費使用和傳播。

這個是詢問你安裝的路徑,你可以選擇自己喜歡的路徑。

這個是詢問你安裝的模式,因為軟件也不大,所以如果你的硬盤空間有空余的話,就選擇完全模式吧。

這個是安裝前的確認(rèn),如果沒有什么問題的話,他將開始將Code::Block安裝到你的機器上了。

在一系列的安裝后,你將看到如上的界面。提醒你已經(jīng)安裝好Code::Block了。Launch Code::Block意思是馬上運行Code::Block



配置


在第一次運行Code::Block時,她會詢問你所使用的編譯器種類。如果不是有特殊要求的話,我這里選擇GNU GCC Compiler。如果你一開始選錯了也沒有關(guān)系。

由于,我們安裝的是沒有編譯器的版本。所以,我們這里必須安裝編譯器,具體的安裝方式,可以參照前面的文章。這里,建議安裝MinGW。現(xiàn)在我假設(shè)你的編譯器安裝在了,$(MINGW)目錄下。

運行Code::Block,在菜單中選擇Build -> Compiler Options。調(diào)出編譯器配置框。

如圖所示,這個就是編譯器選項,我們這里使用的是GCC所以,在最開始選擇。GNU GCC Compiler。說明你選擇使用的是GCC


然后選擇Programs選項卡,設(shè)置我們MinGW的路徑。

Compiler's installation directory中添加你MinGW的路徑,按照上面的定義他應(yīng)該是$(MINGW)。注意別把bin目錄包含進(jìn)去。如果你只安裝了C語言編譯器,并且你只使用C語言編譯器。請將Linker for dynamic libs中的mingw32-g++.exe改為mingw32-gcc.exe


至此,我們已經(jīng)順利完成Code::Block的安裝與配置了。如果,你選擇的是帶編譯器的版本,那么你可以忽略配置部分。


使用


總體來說,Code::Block的使用還是比較顯而易見的。對于有一些編程經(jīng)驗的人,使用Code::Block并不是一件非常困難的事情。當(dāng)然,Code::Block可以建立自己的項目模板。具體的做法和Dev-C++類似。您可以查看$(CodeBlocks)/share/CodeBlocks/templates目錄中的文件。


最后的內(nèi)容:


總體來說,這次介紹的兩個IDE總體來說還是不錯的。不過,筆者使用最多的還是Dev-C++。對于Visual-MinGWCode::Blocks我了解并不多。前者是因為并不太喜歡,后者是由于剛出來。不過,還是希望我寫的內(nèi)容對各位有用。當(dāng)然,我個人的喜好不會影響各位的使用。現(xiàn)在筆者沒有使用其中任何一款IDE,筆者現(xiàn)在使用的IDE是我自己架設(shè)的,在Windows下我使用的是notepad作為我編寫代碼的工具,使用Makefile管理項目。所以,各位可以放心的選擇各自喜好的IDE。不用擔(dān)心會不被支持,或者被厭棄。至此,關(guān)于IDE的介紹將就到這里結(jié)束了。以后我將主要針對函數(shù)庫本身做詳細(xì)的介紹,并提供教程。


文外音:


首先,對各位讀者表示抱歉。因為原本我準(zhǔn)備趁著這次暑假多寫一點東西的。可是,并沒有預(yù)期的那么好。原本這篇文章應(yīng)該在上個月寫出來的。可是,上個月為了練習(xí)編程技巧,寫了個Sudoku Puzzle,因此沒能有時間寫文章了。如果各位想要的話,可以問我要。那個程序原本預(yù)計一周完成的,可是沒想時間遠(yuǎn)遠(yuǎn)超出了我的預(yù)計。后來,八月初才完成的。本想可以寫了吧,沒想又發(fā)起高燒了,結(jié)果久久沒能寫出文章,對各位對我的期望,我表示非常抱歉。如果你對于文章有什么意見,疑惑或者問題,可以到http://blog.csdn.net/visioncat上提出。我盡我所能將在第一時間回答您。

上文回顧:

在上一篇文章中,我主要為大家介紹了有關(guān)IDE方面的內(nèi)容。其中主要包括一些我個人比較喜歡的三個IDE。本文,我將為各位介紹GCC的編譯參數(shù)以及組成和Makefile的使用方式。


GCC for Win32開發(fā)環(huán)境介紹(4)


第三章GCC粗探——GCC的組成與附加參數(shù)


第一節(jié)GCC的家族成員


總的來說,GCC應(yīng)該是一個編譯器。可是,為什么我還要在這里介紹GCC的家族成員呢?其實,整套的GCC環(huán)境并不是由GCC構(gòu)成的,他是由多個包所組成的。這些包的互相作用產(chǎn)生了GCC的開發(fā)環(huán)境。其中,有一些包是你開發(fā)應(yīng)用程序所必備的基本包。離開這些包你將無法正常使用GCC


GCC的基本包列表。


GCC的基本開發(fā)環(huán)境,主要由一下幾個包構(gòu)成。Binutils,這個是輔助GCC的工具包,里面包含了連接器,匯編器,動態(tài)靜態(tài)庫生成程序,等等。GCC,這個包是GCC本身。當(dāng)然GCC包中還包括一下幾個包,如core,java,ada等,每個包都代表了一種語言。然后,就是win32api,mingw-runtime,這個是在Win32下使用的標(biāo)準(zhǔn)函數(shù)包。如果,你使用的是Cygwin或者是在Unix環(huán)境下,那么這個包就是GlibC


所以,由上所述。GCC的基本包有:binutils gcc glibc/[win32api,mingw-runtime]有了這些包。你基本能夠開始編譯應(yīng)用程序了。


當(dāng)然,如果說你想要寫一個小程序。自然這些包已經(jīng)夠了。但是如果你要寫一個較大的工程。那么,這些包也許就不能很好的勝任你的工作了。因為,對于一個大的項目,需要編譯的文件不只一個,而且還有依賴關(guān)系等等。

所以,GCC中還包括gmake包用于管理項目。當(dāng)然,還有automake。但是我個人還是不太喜歡automakeautomake其實是幫助你自動的管理你的項目,當(dāng)然實現(xiàn)這個自動也是比較麻煩的,所以與其用automake管理中小型項目,不如用gmake自己寫個腳本。不過,automake通常用于源代碼發(fā)布的應(yīng)用,如果在開發(fā)時使用會延長開發(fā)周期。

Gmake,automake,都是通過編譯腳本來批量的編譯程序。他們能夠更具你所給定的依賴關(guān)系,來自動的判斷需要重新編譯的源代碼,然后編譯。這點的確可以幫助開發(fā)人員減輕不少的人力和開發(fā)周期。比如,你用Makefile管理一個項目,那么在你第一次編譯程序以后,如果你的源代碼沒有做過任何編輯,那么下次再調(diào)用gmake的程序時,gmake就不會再去一一編譯每個文件。而是簡單的連接一下主程序,或者什么都不作的退出(這要取決于你寫的Makefile腳本)


但是,對于有些開發(fā)人員來說,上面這些包還是不能滿足他們的要求。因為他們要調(diào)試程序。所以,GCC還包括另一個包。那就是GDBgdbGCC開發(fā)的,用于跟蹤調(diào)試的,命令符型調(diào)試器。它的功能還是比較強大的。基本,你能在VC下做到的,GDB也可以。不過,GDB的命令還是比較多的。掌握一些基本的調(diào)試命令一般就夠使用了。


總結(jié)

GCC開發(fā)環(huán)境包括如下幾大包。

binary

基本包

提供基本的匯編器,連接器等

gcc

基本包

各種語言的編譯器,包括C,C++,Ada,Java

Win32api,mingwi-runtime/glibc

基本包

系統(tǒng)函數(shù)庫

Gmake/automake

需要包

管理項目編譯的程序

gdb

附加包

調(diào)試程序


第二節(jié)GCC的常用編譯參數(shù)


VC,TC等編譯器不同,GCC其實是可以很方便的在提示符下編譯程序的。GCC在提示符下編譯程序,并沒有如同VC那樣的冗長而晦澀的編譯參數(shù)。相反,卻有著比VC更靈活且簡短的參數(shù)。

不得不承認(rèn),不懂GCC編譯參數(shù)的人,確實會損失一些GCC的強大功能。所以,我下面簡單介紹一下GCC的一些基本編譯參數(shù)。這里,我以C編譯器為例。


編譯二進(jìn)制代碼

$gcc -c yours.c -o yours.o

使用這段指令,GCC將會把yours.c編譯成yours.o的二進(jìn)制代碼。其中,yours.o就類似于VC,TC中的.obj文檔。


編譯最簡單的小程序。

$gcc -o yours yours.c

通過這條指令,GCC將會把yours.c源代碼編譯成名為yours的可執(zhí)行程序。當(dāng)然,您也可以將yours.c改成我們剛才介紹的yours.o文件。這樣,gcc將使用編譯剛才編譯好的二進(jìn)制文檔來鏈接程序。這里,格式的特點是,-o后面是一串文件列表,第一個參數(shù)是所編譯程序的文件名,從第二個開始,就是您編譯和連接該可執(zhí)行程序所需要的二進(jìn)制文檔或者源代碼。


編譯時將自己的頭文件目錄設(shè)為默認(rèn)頭文件目錄

$gcc -I”Your_Include_Files_Document_Path” -c yours.c -o yours.o

這條指令中的-I參數(shù)將會把Your_Include_Files_Document_Path添加到你默認(rèn)的頭文件目錄中。這樣您將可以使用#include <your_include.h>來導(dǎo)入頭文件。


編譯時使用自己的靜態(tài)庫存放目錄

$gcc -L”Your_Lib_Files_Document_Path” -o yours yours.o

這條指令將會讓GCC在連接時除了在默認(rèn)Lib存放目錄中搜索指定的靜態(tài)庫以外,還會在Your_Lib_Files_Document_Path中搜索。


編譯時使用靜態(tài)連接庫

$gcc -lyour_lib -o yours yours.o

這條指令將會讓GCC在連接時把libyour_lib.a中您所用到的函數(shù)連接到可執(zhí)行程序中。此處注意,GCC所使用的靜態(tài)連接庫是lib*.a格式的。在連接時,只且僅需要提供*的內(nèi)容就可以了。


編譯時使用優(yōu)化

$gcc -O2 -c yours.c -o yours.o

使用優(yōu)化方式編譯程序,其中除了-O2以外,還有-O3 -O1等等。他們代表不同的優(yōu)化等級。最常用的,是-O2優(yōu)化。當(dāng)然,還有針對特殊CPU的優(yōu)化,這里就不介紹了。


編譯時顯示所有錯誤和警告信息

$gcc -Wall -c yours.c -o yours.o

GCC在默認(rèn)情況下,將對一些如變量申請未使用這樣的問題或者申請了沒有給予初始值的問題忽略。但是,如果使用了-Wall參數(shù),編輯器將列出所有的警告信息。這樣,您就可以知道您的代碼中有多少可能會在其他操作系統(tǒng)下出錯的地方了。(用這個指令看看你的代碼有多少地方寫的不怎么合適。)


編譯連接時,加入調(diào)試代碼

$gcc -g -o yours yours.c

正如同VCdebug編譯模式一樣,GCC也有debug模式。添加了-g參數(shù)編譯的可執(zhí)行程序比普通程序略為大一些,其中添加了一些調(diào)試代碼。這些代碼將被gdb所支持。


連接時縮小代碼體積

$gcc -s -o yours yours.o

這個參數(shù),似乎我沒有在Unix環(huán)境下看到過。也不知道具體什么作用。因為有人說Visual-MinGW生成的代碼小,于是研究了一下她的編譯參數(shù),發(fā)現(xiàn)release模式的編譯參數(shù)就加了這一項。貌似編譯后的代碼的確縮小了很多。


獲得幫助

$gcc --help

這條指令從意思上就能看出,獲得gcc的幫助信息。如果您有什么特殊需要,也許這個指令能幫上點小忙。


第三節(jié) 如何寫一個簡單的Makefile


說了半天Makefile管理項目,我想現(xiàn)在該說一下如何寫了。其實,Makefile文件總體還是比較容易寫的,基本只要你會使用命令行,就可以寫Makefile。下面我簡單介紹一下Makefile的構(gòu)成和書寫。


一個輸出HelloWorld的簡單Makefile

all:

echo HelloWorld

這個Makefile代碼,運行后將在屏幕上打印一個HelloWorldall其實是類似C代碼中的main函數(shù)。gmake程序?qū)⒃谶\行Makefile代碼時,首先運行此處的代碼。注意,此處echo前面的是<tab>GCC對空格很敏感的。


添加依賴項的Makefile

all:depend

@echo I am the main

depend:closeecho

@echo I am the depend

closeecho:

@echo off

這個Makefile代碼,的作用還是輸出句子。不同的是她添加了幾個指令塊之間的依賴關(guān)系。其中all依賴于dependdepend依賴于closeecho。這樣,程序在編譯時將根據(jù)腳本的依賴關(guān)系來判斷文件編譯的先后順序。


執(zhí)行Makefile

$make -f Makefile

通常情況下,不用-f參數(shù),make程序?qū)⒃诋?dāng)前目錄下搜索名為Makefile的文件作為需要執(zhí)行的文件。而使用-f將指定Makefile的文件名。


一個完整的Makefile

all:yours

@echo OK

yours:yours.o

gcc -o yours yours.o

yours.o:yours.c

gcc -c yours.c -o yours.o


更多有關(guān)Makefile的詳細(xì)內(nèi)容請查相關(guān)資料。



文外音:

的確,發(fā)現(xiàn)了。我這個系列的文章進(jìn)展的并沒有我預(yù)期和承諾的那么快。確實挺讓我感到無奈的。不過,幸好你能夠理解我。總體來說,本文主要是簡單介紹一下GCC的一些基礎(chǔ)。因為我發(fā)現(xiàn)有許多讀者對GCC并不是很了解。

說來也挺無奈的,最近發(fā)現(xiàn)原來周圍有個小人當(dāng)?shù)馈4巳诵彰乙簿碗[去了。從去年開始,就常常在和我聊得比較好的幾個女生面前造我的謠。所以,原本應(yīng)該9月該出來的文章拖延到了9月底。說起這個人,我希望大家要以此人為鑒。不要像他那樣。

這人自稱在硬件方面很行,不過據(jù)我所知,他無非就是可以把各種型號的主板和硬件編號背出來而已。連基本的線程進(jìn)程都搞不清楚。還成天鼓吹32bit的機器是淘汰的機器。不得不承認(rèn),這位滿口臟話為人無恥的家伙的確硬件方面挺不錯的。但是,我還是覺得做技術(shù)的人不要太追求表面的東西,不要追求過于超前的東西,同時也更要注意自己的品行道德。

也許是年紀(jì)大了,發(fā)了一些牢騷。希望各位不要建議。不過,事以至次,我也無力挽回了。

最后感謝各位對我的支持,更感謝那些愿意為我效力的朋友們。同時,如果您有什么問題或者建議,都可以提出來。為了您能及時準(zhǔn)確的得到回復(fù)請到http://blog.csdn.net/visioncat上發(fā)表你的留言。謝謝


總結(jié)

以上是生活随笔為你收集整理的GCC for Win32开发环境介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。