




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、在mingw環(huán)境中生成和使用dll都是十分方便的。1 .生成dllgcc(g+)-shared-otest.dlltest.c一直用VS,看現(xiàn)在Eclipse很火,便想弄一下玩玩,用到了MINGW/繼而用到了GCCKGCC相當(dāng)?shù)牟皇煜ぃ瑥念^開始學(xué)一些簡單的吧。簡單的GC5法gcc命令提供了非常多的命令選項(xiàng),但并不是所有都要熟悉,初學(xué)時掌握幾個常用的就可以了,到后面再慢慢學(xué)習(xí)其它選項(xiàng),免得因選項(xiàng)太多而打擊了學(xué)習(xí)的信心。一.常用編譯命令選項(xiàng)假設(shè)源程序文件名為test.c。1 .無選項(xiàng)編譯鏈接用法:#gcctest.c作用:將test.c預(yù)處理、匯編、編譯并鏈接形成可執(zhí)行文件。這里未指定輸出文件,默
2、認(rèn)輸出為a.out。編譯成功后可以看到生成了一個a.out的文件。在命令行輸入./a.out執(zhí)行程序。./表示在當(dāng)前目錄,a.out為可執(zhí)行程序文件名。2 .選項(xiàng)-o用法:#gcctest.c-otest作用:將test.c預(yù)處理、匯編、編譯并鏈接形成可執(zhí)行文件test。-。選項(xiàng)用來指定輸出文件的文件名。輸入./test執(zhí)行程序。3 .選項(xiàng)-E大寫,注意用法:#gcc-Etest.c-otest.ior作用:將test.c預(yù)處理輸出test.i文件。4 .選項(xiàng)-S大寫,注意用法:#gcc-Stest.i作用:將預(yù)處理輸出文件test.i匯編成test.s文件。5 .選項(xiàng)-c用法:#gcc-ct
3、est.s作用:將匯編輸出文件test.s編譯本出test.o文件。6 .無選項(xiàng)鏈接用法:#gcctest.o-otest作用:將編譯輸出文件test.o鏈接成最終可執(zhí)行文件test。輸入./test執(zhí)行程序。7 .選項(xiàng)-O用法:#gcc-O1test.c-otest作用:使用編譯優(yōu)化級別1編譯程序。級別為13,級別越大優(yōu)化效果越好,但編譯時間越長。車入./test執(zhí)行程序。二.多源文件的編譯方法如果有多個源文件,基本上有兩種編譯方法:假設(shè)有兩個源文件為test.c和testfun.c1 .多個文件一起編譯用法:#gcctestfun.ctest.c-otest作用:將testfun.c和te
4、st.c分別編譯后鏈接成test可執(zhí)行文件。2 .分別編譯各個源文件,之后對編譯后輸出的目標(biāo)文件鏈接。用法:#gcc-ctestfun.c/將testfun.c編譯成testfun.o#gcc-ctest.c/將test.c編譯成test.o#gcctestfun.otest.o-otest/將testfun.o和test.o鏈接成test以上兩種方法相比較,第一中方法編譯時需要所有文件重新編譯,而第二種方法可以只重新編譯修改的文件,未修改的文件不用重新編譯。1.gcc的家族成員總的來說,gcc應(yīng)該是一個編譯器??墒?,為什么我還要在這里介紹gcc的家族成員呢?其實(shí),整套的gcc環(huán)境并不是由gc
5、c構(gòu)成的,他是由多個包所組成的。這些包的互相作用產(chǎn)生了gcc的開發(fā)環(huán)境。其中,有一些包是你開發(fā)應(yīng)用程序所必備的基本包。離開這些包你將無法正常使用gcc。gcc開發(fā)環(huán)境包括如下幾大包:binarygcc基本包提供基本的匯編器,連接器等基本包各種語言的編譯器,包才C,C+,Ada,JavaWin32api,mingwi-runtime/glibcmake/automakegdb2.gcc的常用編譯參數(shù)基本包系統(tǒng)函數(shù)庫需要包管理項(xiàng)目編譯的程序附加包調(diào)試程序同VC,TC等編譯器不同,gcc其實(shí)是可以很方便的在提示符下編譯程序的。gcc在提示符下編譯程序,并沒有如同VC那樣的冗長而晦澀的編譯參數(shù)。相反,
6、卻有著比VC更靈活且簡短的參數(shù)。不得不承認(rèn),不懂gcc編譯參數(shù)的人,確實(shí)會損失一些gcc的強(qiáng)大功能。所以,我下面簡單介紹一下gcc的一些基本編譯參數(shù)。這里,我以C編譯器為例。注意:gcc的編譯參數(shù)是區(qū)分大小寫的。編譯二進(jìn)制代碼gcc-cyours.c-oyours.o使用這段指令,gcc將會把yours.c編譯成yours.o的二進(jìn)制代碼。其中,yours.o就類似于VC,TC中的.obj文檔。編譯最簡單的小程序gcc-oyoursyours.c通過這條指令,gcc將會把yours.c源代碼編譯成名為yours的可執(zhí)行程序。當(dāng)然,您也可以將yours.c改成我們剛才介紹的yours.o文件。這
7、樣,gcc將使用編譯剛才編譯好的二進(jìn)制文檔來鏈接程序。這里,格式的特點(diǎn)是,-o后面是一串文件列表,第一個參數(shù)是所編譯程序的文件名,從第二個開始,就是您編譯和連接該可執(zhí)行程序所需要的二進(jìn)制文檔或者源代碼。編譯時將自己的頭文件目錄設(shè)為默認(rèn)頭文件目錄gcc-I"Your_Include_Files_Document_Path"-cyours.c-oyours.o這條指令中的-I參數(shù)將會把Your_Include_Files_Document_Path添加到你默認(rèn)的頭文件目錄中。這樣您將可以使用#include<your_include.h>來導(dǎo)入頭文件。編譯時使用自己
8、的靜態(tài)庫存放目錄gcc-L"Your_Lib_Files_Document_Path"-oyoursyours.o這條指令將會讓gcc在連接時除了在默認(rèn)Lib存放目錄中搜索指定的靜態(tài)庫以外,還會在Your_Lib_Files_Document_Path中搜索。編譯時使用靜態(tài)連接庫gcc-lyour_lib-oyoursyours.o這條指令將會讓gcc在連接時把libyour_lib.a中您所用到的函數(shù)連接到可執(zhí)行程序中。此處注意,gcc所使用的靜態(tài)連接庫是lib*.a格式的。在連接時,只且僅需要提供*的內(nèi)容就可以了。編譯時使用優(yōu)化gcc-O2-cyours.c-oyour
9、s.o使用優(yōu)化方式編譯程序,其中除了-O2以外,還有-O3-O1等等。他們代表不同的優(yōu)化等級。最常用的,是-O2優(yōu)化。當(dāng)然,還有針對特殊CPU的優(yōu)化,這里就不介紹了。編譯時顯示所有錯誤和警告信息gcc-Wall-cyours.c-oyours.ogcc在默認(rèn)情況下,將對一些如變量申請未使用這樣的問題或者申請了沒有給予初始值的問題忽略。但是,如果使用了-Wall參數(shù),編輯器將列出所有的警告信息。這樣,您就可以知道您的代碼中有多少可能會在其他操作系統(tǒng)下出錯的地方了。(用這個指令看看你的代碼有多少地方寫的不怎么合適。)編譯連接時,加入調(diào)試代碼gcc-g-oyoursyours.c正如同VC有debu
10、g編譯模式一樣,gcc也有debug模式。添加了-g參數(shù)編譯的可執(zhí)行程序比普通程序略為大一些,其中添加了一些調(diào)試代碼。這些代碼將被gdb所支持。連接時縮小代碼體積gcc-s-oyoursyours.o因?yàn)橛腥苏fVisual-MinGW生成的代碼小,于是研究了一下它的編譯參數(shù),發(fā)現(xiàn)release模式的編譯參數(shù)就加了這一項(xiàng)。貌似編譯后的代碼的確縮小了很多。反匯編gcc-Syours.c用這個指令能把C語言變成匯編語言,不過不是常見的Intel語法,而是AT&T語法。兩者的語法有很大的區(qū)別。獲得幫助gcc-help這條指令從意思上就能看出,獲得gcc的幫助信息。如果您有什么特殊需要,也許這個
11、指令能幫上點(diǎn)小忙。總結(jié):gcc的編譯參數(shù)是可以組合起來的,如:gccyours.c-oyours-Wall-s-O2預(yù)告:下一篇將介紹用gdb調(diào)試C程序MinGWV門(1)搭建開發(fā)環(huán)境半糖主義發(fā)表于2008年02月10日00:30閱讀(178)評論(1)分類:MinGW舉報GCC是一個原本用于Unix系統(tǒng)下編程的編譯器。不過,現(xiàn)在GCCk有了許多Win32下的移植版本。所以,也許對于許多Windows開發(fā)者來說,GC如是一個比較陌生的東西。目前GCQfcwindows下有三個移植版本:MinGWCygwin和Djgpp。筆者對MinGW:匕較熟悉,而其它2個沒怎么用過。本文主要講述如何安裝和配
12、置MinGWMinGW是MinimalisticGNUforWindows的縮寫。它是一個建立在GCCF口binutils項(xiàng)目上的編譯器系統(tǒng)。和其他GCC勺移植版相比,它可以說是最接近Win32的一個了。因?yàn)椋琈inGWL乎支持所有的Win32API,這也是MinGW勺特色之一。它所連接的程序,不需要任何第三方庫就可以運(yùn)行了。在某種程度上看,MinGW庾像是VC的替代品。MinGW可以從上獲得。要安裝MinGWT兩種方案:第一種方案:手動安裝至Uhttp:縮包。考慮到文件的更新,筆者只寫出文件的主要部分,省去文件的版本和更新日期(注:帶有src表示源代碼)
13、。gcc-core:C語言編譯器,目前有2、3、4三個版本,推薦使用最新的。gcc-g+:C+聞言編譯器,版本同上。(可選)binutils:MinGW勺匯編器和連接器等基礎(chǔ)工具。mingw32-make:Make工具,用以管理你的項(xiàng)目。gdb:MinGWW試器。win32api:win32的API函數(shù)頭文件和連接庫mingw-runtime:MinGW勺運(yùn)行時庫把以上的壓縮包解壓到一個目錄中,如F:MinGWo注:MinGW®包括一個MSYM(MinimalSYStem)。這個工具是用來模仿UnixShell,它可以把Unix上的命令轉(zhuǎn)換成Windows命令,如果習(xí)慣Unix可以下
14、載這個工具。把MinGW勺目錄F:MinGWbin添加進(jìn)PATH%境變量中,可以在系統(tǒng)屬性那里永久設(shè)置,或者建一個bat文件,寫入以下字符:setPath=%PATH%;FMinGWbin然后進(jìn)入DOSi!行這個bat文件即可。最后在MS-DO科境下運(yùn)行:gcc-v如果顯示類似下面一段GCC勺版本信息,說明你安裝的MinGWfB正常工作了。C:>gcc-vUsingbuilt-inspecs.Target:mingw32Configuredwith:./gcc-4.2.1/configure-with-gcc-enable-libgomp-host=mingw32-build=mingw
15、32-target=mingw32-program-suffix=-sjlj-with-arch=i486-with-tune=generic-disable-werror-prefix=/mingw-with-local-prefix=/mingw-enable-threads-disable-nls-enable-languages=c,c+,fortran,objc,obj-c+,ada-disable-win32-registry-enable-sjlj-exceptions-enable-libstdcxx-debug-enable-cxx-flags=-fno-function-s
16、ections-fno-data-sections-enable-version-specific-runtime-libs-disable-bootstrapThreadmodel:Win32gccversion4.2.1-sjlj(mingw32sjlj-unwind)第二種方案:自動安裝至Uhttp:MinGW-x.x.x.exe。安裝過程它會自動從網(wǎng)上下載相應(yīng)的文件,并自動配置好環(huán)境。相信對于Windows下的開發(fā)人員沒什么問題了。在2種安裝方法,筆者偏愛第一種。因?yàn)榭刂贫雀?,比較自由,要更新什么文件直接下載覆蓋即可。第二種方案還有一個缺點(diǎn),就是它下載的文件可能不是最新的。這樣,你就可以在任何目錄下使用MinGWT。后記:想當(dāng)初筆者自己在安裝配置MinGW勺時候,不知走
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《中國機(jī)長》觀后感15篇
- “六一”兒童節(jié)活動總結(jié)
- 金剛石產(chǎn)業(yè)園項(xiàng)目建議書(模板)
- 供水老舊管網(wǎng)改造項(xiàng)目實(shí)施方案(范文模板)
- 心理測驗(yàn)技能教學(xué)課件
- 端午班級活動課件
- 廚房用品設(shè)計(jì)調(diào)研作業(yè)
- 廣西藍(lán)天航空職業(yè)學(xué)院《工程監(jiān)理》2023-2024學(xué)年第二學(xué)期期末試卷
- 西昌學(xué)院《課堂組織與管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 桂林醫(yī)學(xué)院《綠色建筑與綠色施工》2023-2024學(xué)年第二學(xué)期期末試卷
- 郵政社招筆試題庫
- 2023年黑龍江省黑河市公開招聘警務(wù)輔助人員(輔警)筆試必刷經(jīng)典測試卷(1)含答案
- 建設(shè)項(xiàng)目全過程工程咨詢-第一次形成性考核-國開(SC)-參考資料
- 《香菱形象分析》課件
- 《真希望你也喜歡自己》房琪-讀書分享
- 大班沙水游戲教案30篇
- 國家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 4-10-04-02 保健按摩師 人社廳發(fā)202332號
- 粵人版(2024新版)七年級上冊地理期末復(fù)習(xí)考點(diǎn)背誦提綱
- 邏輯學(xué)導(dǎo)論學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 《危險化學(xué)品建設(shè)項(xiàng)目安全設(shè)施設(shè)計(jì)專篇編制導(dǎo)則》編制說明
- 鼻出血的護(hù)理課件
評論
0/150
提交評論