㈠ 源代碼到可執行 文件之間的轉換用到的 編譯器如gcc、匯編器、連接器等是怎麼集成到IDE環境中的
在VisualC 2005中,如何調用其它編譯器編譯cpp文件呢?換句話說,如何把其它編譯器集成到VC2005的IDE中呢?
象ICC這樣的編譯器安裝之後會自動集成進來,要集成其他編譯器那還得自己動手。下面介紹一種簡單、淺層的「集成」方法。
你也許注意到了,在VC2005的IDE中是不能編譯單個.cpp文件的,除非把它放在工程中。但是,我們可以通過調用外部工具實現編譯單文件。
下面以調用G 為例說明如何編譯單個.cpp文件。如果要編譯單個.c文件,使用GCC即可,方法同理。
也許你現在還不知道G 。G 是GCC中的一員。GCC的含義是GNU編譯器集合(GNUCompilerCollection),包括C、C 、Objective-C、Fortran、Java、Ada連同與這些語言相配的庫等。GCC被譽為「世界上最重要的軟體」。許多免費的編譯器都是GCC的移植版—MinGW(MinimalistGNUforWindows)中攜帶的編譯器就是如此。
以MinGW為例,我們可以下載DevC ,DevC 目前最新版為4.9.9.2。安裝DevC 的同時就安裝了MinGW,其中包含了G 3.4.2.
假設DevC 安裝在D:\Dev-Cpp目錄下。
下面我們在VC2005的菜單點擊「工具(Tools)->外部工具(ExternalTools)->添加(Add)」。
分別填入:
標題(Title):GNUC Compiler
命令(Command):D:\Dev-Cpp\bin\g .exe
參數(Arguments):-Wall-o$(ItemFileName)$(ItemFileName)$(ItemExt)-time
初始目錄(Initialdirectory):$(ItemDir)
再鉤選下面的"使用輸出窗口(UseOutputwindow)".
說明:如果你已經把D:\Dev-Cpp\bin\目錄添加到系統環境變數中,那麼Command指定為g .exe即可。Cygwin同理。
這些參數只是一個參考。你可以查閱VC編譯器的宏設置你需要的參數。
乾脆順帶補充一下DigitalMarsC 編譯器的參考參數設置:
標題(Title):DigitalMars
命令(Command):C:\dm\bin\dmc.exe
參數(Arguments):$(ItemFileName)$(ItemFileName)$(ItemExt)
初始目錄(Initialdirectory):$(ItemDir)
好,下面切換到main函數所在文件,點擊工具(Tools)菜單下的「GNUC Compiler」開始編譯。
注意g 此時編譯的指是純C 程序,對於包含int_tmain(intargc,_TCHAR*argv[])這類VC特有的C 程序自然是無法通過編譯的。
如果編譯沒有出錯,對於早期版本的g 而言,Outputwindow是沒有任何輸出的。
而對於較新版本的g ,將輸出類似以下的信息:
#cc1plus0.670.22
#as0.050.01
#collect20.360.19
這是-time報告的編譯過程中每個子過程所佔用的CPU時間。
當然,你還可以更改編譯參數,使輸出窗口輸出其他編譯信息。
我們還可以通過添加外部工具來實現運行g 生成的程序的功能。步驟如下:
在VC2005的菜單點擊「工具(Tools)->外部工具(ExternalTools)->添加(Add)」。
分別填入:
標題(Title):RunasC Application
命令(Command):%systemroot%\system32\cmd.exe
參數(Arguments):/c$(ItemFileName).exe
初始目錄(Initialdirectory):$(ItemDir)
不要鉤選下面的「使用輸出窗口」和「退出時關閉」。
注意:cpp文件必須放在工程中,g 生成的程序才能被運行!
用MinGW的g 編譯出的程序可以在沒有安裝MinGW的Windows系統上運行!
但是在Cygwin/gcc下編譯出來的程序,在windows執行必須依賴cygwin1.dll。
通過VC2005創建不帶預編譯頭的Win32控制台應用程序空環境,這樣編譯出來的可執行文件也不是放在哪台機子都能跑的。但是常規空環境可以做到。
下面講講如何設置快捷鍵。
點擊菜單中的"工具->自定義",
點擊右下角的"鍵盤",
點擊"按快捷鍵"下面的文本框,
按下Shift Ctrl F7,如果這個快捷鍵已經分配給了其他的命令,更換一個即可。
㈡ cygwin下編譯,調試C源程序
你是初學者吧,沒關系,很簡單的。
cygwin我沒用過,大概是別人給套了個可視化編程界面了。
1.你運行cygwin這個軟體,然後「文件/打開/」把你准備好的C源代碼載入到這個軟體中。(就好比我們平時用word時,先運行word軟體,然後把你的文檔加如入並進行編輯。)
2.在軟體界面上(一般在:工具欄)找一個功能為「運行」的按紐。
准備知識:
寫一個程序一般分以下步驟:
1.編輯(就是把你的源代碼寫出來,你可以用「記事本」寫,當然一般編程工具cygwin也會提供編輯環境)
2.編譯+連接(你只要點個按紐就行,這個任務完全由cygwin完成,你不必管它怎麼完成這個任務的。
==============================
那麼,編譯是什麼意思呢?
==============
由於你是初學者,我只能用盡可能通俗的話給你解釋一下,這種解釋是不夠准確的。因為計算機本身只認識二進制指令,就是0/1的序列,每個0/1的序列都在計算機設計時,就賦予了一定的含義。比如:設計師可以把0001表示作個加法,用0000表示作個減法。但是如果人們用0/1的序列來表達我們的需求,顯然非常麻煩。於是,後來一些科學家就發明了一種近似英語的計算機語言C,很明顯如果要讓計算機也明白C表達的意思,我們就必須把C翻譯成0/1的序列。那麼,編譯就可以理解為「翻譯」。
[打個比方1]這就好比,你是個中國人,你只會說中文,計算機是個美國人,它只會說英語。你要請計算機給你做件事,你可以用中文寫好你的要求,然後請個翻譯,把你的要求翻譯成英語。)
======
調試是什麼呢?
=====
調試分兩個層面:(沿用上面的比方1)
1.語法層
你用中文表達你的要求時,可能你的用語不夠規范,或寫了錯別字,使得你
請的翻譯不理解你的意思,沒辦法翻譯下去。這時,這個翻譯就會通知你說:「對不起,你這個字是不是寫錯了」。於是,你就「調整調整,修改修改,才試一試」(「調試」由此得名),然後才請翻譯進行翻譯。
2.語意層
由於你的疏忽,你把要求表達錯了。舉個離譜點的例子:你本意是打算請計算機幫你買張去北京的火車票的,結果你不小心,寫成了買張去上海的火車票。出現這個錯誤,翻譯沒方法告訴你,只有等計算機把一張上海的車票給你,你才意識到,於是你重新調試,才執行。
㈢ c++編譯器的分類
Cygwin
Mingw32
DJGPP
Dev-C++(Mingw32)
還有正宗的GNU GCC 2.95.5~3.0.0.4版本
GNU C++
g++是一個開源的C++編譯器,GCC3.3對標准化C++的支持達96.15%。
值得一提的是,gcc是gnu c的編譯器, g++是gnu c++的編譯器, 而egcs(Enhanced GNU Compiler Suite)可以認為是gcc的改進版。目前gcc已經改名,從原來代表GNU C Compiler改變為代表GNU Compiler Collection。而MinGW或Cgywin,是在windows平台上的gnu c/c++編譯器,以及庫文件,運行環境的集合。
在GCC家族中GNU GCC是根本,其它的編譯器版本都是從它導出的。其中,Cygwin和Mingw32都是WIN32平台下的編譯器,DJGPP是DOS下的32位編譯器。大家所熟知的DEV-C++充其量只是GCC的一個外殼,它所自帶的編譯器就是Mingw32的一個版本。這些GCC的版本中,Cygwin是最大的,它與其說是一個編譯器,倒不如說是一套編程工具。它不僅有編譯器,還有其它很多的工具。其實,它就是一個UNIX系統在WIN32平台上的實現。實現了大多常用的UNIX工具,最近的版本中連Apache這樣的「工具」都集成進來的。不過,Cygwin雖然功能強大,但它卻不是很易用(和UNIX相似,熟悉UNIX的人用它可以很快上手),因為太多其它的工具分散了人們的注意力。相比之下Mingw32就要好用得多,它只有最基本的幾個編程工具(只可惜它不自帶GDB)。GCC中並不只是C/C++編譯器,其中還有很多其它的編譯器如JAVA,Fortran,ADA等。它是一個編譯器集合,不過有些編譯器只能在UNIX系統上用。 MSC 5.0、6.0、7.0
MSQC 1.0、2.5
MSVC 1.0、4.2、6.0、7.0
Visual C++
VC++6.0對標准化C++的兼容僅達83.43%。
它是Visual Studio、Visual Studio.net 2002、Visual Studio.net 2003、Visual Studio.net 2005的後台C++編譯器。隨著Stanley Lippman等編譯器設計大師的加盟,它變得非常成熟可靠了。Visual C++ 7.1對標准C++的兼容性達到98.22%。 TC 1.0、2.0
TC++ 1.01、3.0
BC 3.0、3.1、4.0、4.5、5.0、5.02
BCB 3.0、5.0、6.0
Borland C++
該編譯以速度快、空間效率高而著稱。它的5.5版本對標准化C++的支持達92.73%,而官方稱100%符合ANSI/ISO的C++標准和C99標准。
它是Borland公司開發的,是Borland C++ Builder和Borland C++ Builder X這兩種IDE的後台編譯器。 Intel C/C++ 5.0
Watcom C/C++ 11.0、11.0c
VectorC 1.3.3
IBM VisualAge for C++
DigitalMars C/C++
KAI C/C++ 4.03f for RedHat 7.2
Lcc4.1
LCC-WIN32 2001-09-25~2002-04-28日版
Small C
CC386
Pacific C
Intel C/C++大家一看名稱就知道是Intel的東西,它和VC6完全兼容,不過要掛在VC6下才能用。Watcom C/C++是早先編譯器四國大戰中的一員,原本是很不錯的東西,可惜戰略不對,現在已不見聲息了。倒是以它為基礎的一個OpenWatcom現在還在奮戰。VectorC是我近日才發現的一個好東東,它是個純C的編譯器。IBM的VisualAge for C++原本是IBM想用來淌C++編譯器這片渾水的東西,不過IBM的戰略改了,它就被放棄了。DigitalMars C/C++的前身的Symantec C++(它也是編譯器四國大戰中的一員),不過現在Symantec不做了,於是它的作者就把它改成了DigitalMars C/C++開放給大家使用。以上這些都是WIN32平台上的東西。KAI C/C++是個很強大的C/C++編譯器,它是個多平台的編譯器。不過現在被INTEL收購了,已經停止開發了。Lcc4.1是個純C的編譯器它是開放源代碼的。不過不怎麼好用。LCC-WIN32是一個在LCC基礎上開發的C語言的集成開發環境,很好用,而且有很詳細的資料,FREE!Pacific C是一個純DOS的C的集成開發環境,就不多說了。Small C CC386都是開放源代碼的編譯器,它們都很簡單,應用來給大家學習編譯器的。 Quincy
Eic
CINT
Quincy Eic CINT都是C的解釋器,是用來讓大家學習C語言的其中CINT的功能很強大,還支持一些C++的特性。