gcc編譯器的使用
2004年4月20日最新版本的GCC編譯器3.4.0發布了。目前,GCC可以用來編譯C/C++、FORTRAN、java、OBJC、ADA等語言的程序,可根據需要選擇安裝支持的語言。GCC 3.4.0比以前版本更好地支持了C++標准。本文以在Redhat Linux上安裝GCC3.4.0為例,介紹了GCC的安裝過程。
安裝之前,系統中必須要有cc或者gcc等編譯器,並且是可用的,或者用環境變數CC指定系統上的編譯器。如果系統上沒有編譯器,不能安裝源代碼形式的GCC 3.4.0。如果是這種情況,可以在網上找一個與你系統相適應的如RPM等二進制形式的GCC軟體包來安裝使用。本文介紹的是以源代碼形式提供的GCC軟體包的安裝過程,軟體包本身和其安裝過程同樣適用於其它Linux和Unix系統。
系統上原來的GCC編譯器可能是把gcc等命令文件、庫文件、頭文件等分別存放到系統中的不同目錄下的。與此不同,現在GCC建議我們將一個版本的GCC安裝在一個單獨的目錄下。這樣做的好處是將來不需要它的時候可以方便地刪除整個目錄即可(因為GCC沒有uninstall功能);缺點是在安裝完成後要做一些設置工作才能使編譯器工作正常。在本文中我採用這個方案安裝GCC 3.4.0,並且在安裝完成後,仍然能夠使用原來低版本的GCC編譯器,即一個系統上可以同時存在並使用多個版本的GCC編譯器。
按照本文提供的步驟和設置選項,即使以前沒有安裝過GCC,也可以在系統上安裝上一個可工作的新版本的GCC編譯器。
1. 下載
在GCC網站上()或者通過網上搜索可以查找到下載資源。目前GCC的最新版本為 3.4.0。可供下載的文件一般有兩種形式:gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是壓縮格式不一樣,內容完全一致,下載其中一種即可。
2. 解壓縮
根據壓縮格式,選擇下面相應的一種方式解包(以下的「%」表示命令行提示符):
% tar xzvf gcc-3.4.0.tar.gz
或者
% bzcat gcc-3.4.0.tar.bz2 | tar xvf -
新生成的gcc-3.4.0這個目錄被稱為源目錄,用${srcdir}表示它。以後在出現${srcdir}的地方,應該用真實的路徑來替換它。用pwd命令可以查看當前路徑。
在${srcdir}/INSTALL目錄下有詳細的GCC安裝說明,可用瀏覽器打開index.html閱讀。
3. 建立目標目錄
目標目錄(用${objdir}表示)是用來存放編譯結果的地方。GCC建議編譯後的文件不要放在源目錄${srcdir]中(雖然這樣做也可以),最好單獨存放在另外一個目錄中,而且不能是${srcdir}的子目錄。
例如,可以這樣建立一個叫 gcc-build 的目標目錄(與源目錄${srcdir}是同級目錄):
% mkdir gcc-build
% cd gcc-build
以下的操作主要是在目標目錄 ${objdir} 下進行。
4. 配置
配置的目的是決定將GCC編譯器安裝到什麼地方(${destdir}),支持什麼語言以及指定其它一些選項等。其中,${destdir}不能與${objdir}或${srcdir}目錄相同。
配置是通過執行${srcdir}下的configure來完成的。其命令格式為(記得用你的真實路徑替換${destdir}):
% ${srcdir}/configure --prefix=${destdir} [其它選項]
例如,如果想將GCC 3.4.0安裝到/usr/local/gcc-3.4.0目錄下,則${destdir}就表示這個路徑。
在我的機器上,我是這樣配置的:
% ../gcc-3.4.0/configure --prefix=/usr/local/gcc-3.4.0 --enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++,java
將GCC安裝在/usr/local/gcc-3.4.0目錄下,支持C/C++和JAVA語言,其它選項參見GCC提供的幫助說明。
5. 編譯
% make
這是一個漫長的過程。在我的機器上(P4-1.6),這個過程用了50多分鍾。
6. 安裝
執行下面的命令將編譯好的庫文件等拷貝到${destdir}目錄中(根據你設定的路徑,可能需要管理員的許可權):
% make install
至此,GCC 3.4.0安裝過程就完成了。
6. 其它設置
GCC 3.4.0的所有文件,包括命令文件(如gcc、g++)、庫文件等都在${destdir}目錄下分別存放,如命令文件放在bin目錄下、庫文件在lib下、頭文件在include下等。由於命令文件和庫文件所在的目錄還沒有包含在相應的搜索路徑內,所以必須要作適當的設置之後編譯器才能順利地找到並使用它們。
6.1 gcc、g++、gcj的設置
要想使用GCC 3.4.0的gcc等命令,簡單的方法就是把它的路徑${destdir}/bin放在環境變數PATH中。我不用這種方式,而是用符號連接的方式實現,這樣做的好處是我仍然可以使用系統上原來的舊版本的GCC編譯器。
首先,查看原來的gcc所在的路徑:
% which gcc
在我的系統上,上述命令顯示:/usr/bin/gcc。因此,原來的gcc命令在/usr/bin目錄下。我們可以把GCC 3.4.0中的gcc、g++、gcj等命令在/usr/bin目錄下分別做一個符號連接:
% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc34
% ln -s ${destdir}/bin/g++ g++34
% ln -s ${destdir}/bin/gcj gcj34
這樣,就可以分別使用gcc34、g++34、gcj34來調用GCC 3.4.0的gcc、g++、gcj完成對C、C++、JAVA程序的編譯了。同時,仍然能夠使用舊版本的GCC編譯器中的gcc、g++等命令。
6.2 庫路徑的設置
將${destdir}/lib路徑添加到環境變數LD_LIBRARY_PATH中,最好添加到系統的配置文件中,這樣就不必要每次都設置這個環境變數了。
例如,如果GCC 3.4.0安裝在/usr/local/gcc-3.4.0目錄下,在RH Linux下可以直接在命令行上執行或者在文件/etc/profile中添加下面一句:
setenv LD_LIBRARY_PATH /usr/local/gcc-3.4.0/lib:$LD_LIBRARY_PATH
7. 測試
用新的編譯命令(gcc34、g++34等)編譯你以前的C、C++程序,檢驗新安裝的GCC編譯器是否能正常工作。
8. 根據需要,可以刪除或者保留${srcdir}和${objdir}目錄。
② Win7濡備綍浣跨敤GCC緙栬瘧鍣
棣栧厛錛屼綘闇瑕佸畨瑁単cc緙栬瘧鍣ㄣ傝繖閲屾垜灝變笉璇︾粏璁蹭簡錛屽彲浠ャ備笅闈㈡垜鏉ヨ磋村備綍浣跨敤gcc緙栬瘧鍣錛坵in7涓嬶級銆傛ラゅ備笅錛氾紙浣犱篃鍙浠ヤ婦涓鍙嶄笁錛屾ラら兘宸涓嶅氾級
棣栧厛錛屾垜浠媯楠実cc鏄鍚﹀畨瑁呮垚鍔燂紝鎴戜滑鎵撳紑cmd鍛戒護琛屻傦紙win + R閿錛夛紝璋冨嚭榪愯岋紝杈撳叆cmd紜瀹氬嵆鍙銆
鎴戜滑鍦ㄥ懡浠よ岃緭鍏 g++ -v 錛屾煡鐪嬪畨瑁呯殑鐗堟湰銆傚傛灉瀹夎呮垚鍔燂紝浼氬嚭鐜扮粨鏋溿
鐜板湪鎴戜滑寮濮嬩嬌鐢╣cc錛岄栧厛鎴戜滑鍦ㄤ竴涓娌℃湁涓鏂囩殑鏂囦歡鐩褰曚笅鏂板緩涓涓鏂囨湰鏂囦歡錛岀劧鍚庤緭鍏helloworld浠g爜錛堣繖閲屼綘鍙浠ョ敤c錛屼篃鍙浠ョ敤c++錛夛紝鎴戣繖閲岀敤c鏉ュ啓 #includestdio.h int main() { printf("hello ,world!\n"); return 0; } Ctrl + S 淇濆瓨錛岀劧鍚庡皢鏂囦歡鐨勫悗緙鏀逛負 .c 錛岋紙鏂囦歡鍚嶄笉瑕佹湁涓鏂囷級
鐒跺悗鎴戜滑鍦ㄥ懡浠よ岀敤cd 鎸囦護鎵懼埌鏂囦歡鎵鍦ㄧ殑鏂囦歡澶廣傜劧鍚庤繍琛屾寚浠 g++ 鏂囦歡鍚嶏紙鍖呮嫭鍚庣紑錛屼腑闂存湁涓絀烘牸錛夈傚洖杞︼紝姝ゆ椂錛屽傛灉娌℃姤閿欙紝璇存槑鎴愬姛浜嗐傜幇鍦ㄤ綘鐪嬬湅鏂囦歡鎵鍦ㄧ殑鐩褰曪紝鏄涓嶆槸鐢熸垚浜嗕竴涓 a.exe鐨勬枃浠躲傚癸紝榪欏氨鏄鏂扮紪璇戞垚鍔熺殑鍙鎵ц屾枃浠躲傝繖鏃訛紝浣犲彧闇瑕佸湪鍛戒護琛岃緭鍏a.exe鍗沖彲鎵ц屾ゆ枃浠躲備篃鍙鍙屽嚮鎵ц屻
婕旂ず灝卞埌榪欓噷浜嗭紝濡傛灉鏈夐棶棰橈紝鍙浠ヨ窡鎴戠暀璦錛屾垜浼氬敖鎴戞墍鐭ユ潵甯鍔┿傝嫢鏋滆夊緱鏈夊府鍔╃殑璇濓紝涓嶈佸繕璁扮偣璧炲摝銆傝阿璋錛
③ gcc的使用技巧
首先檢查是否在你的機器上安裝了GCC,使用命令:
可用rpm -q gcc檢查。
如果沒有安裝,請依序檢查並安裝下面各RPM
libbinutils
binutils
make
glibc-devel
gcc-cpp
gcc
看下面的例子:test.c #include<stdio.h>intmain(){char*str=IlikeLinux!;printf(%s,str);return0;}使用gcc編譯。輸入gcc -c test.c得到目標文件test.o.-c命令表示對文件進行編譯和匯編。但並不連接。如果再鍵入gcc -o ../bin/test test.o,那麼將得到名為test的可執行文件。其實這兩步可以一氣呵成,gcc ../bin/test test.c.如果程序沒有錯誤就生成了可執行文件。也許你會覺得基於命令行的編譯器比不上如VC之類的集成開發環境,的確gcc的界面要改進,但是你一旦熟練了就會感到。gcc的效率如此之高。可以告訴大家的是Linux底下強大的C/C++集成開發環境Kdevelop和Vc一樣強大,使用了Gcc編譯器。
GNU C編譯器 即gcc是一個功能強大的ANSI C兼容編譯器,你會操作其他操作系統下的一種C編譯器,能很快掌握GCC.
1、使用Gcc,Gcc是基於命令行的,使用時通常後跟一些選項和文件名。Gcc的基本用法如下: gcc [options] [filenames] 命令行選項制定操作將對命令行上的每個給出的文件執行。
2、GCC的常用選項
編譯選項:gcc有超過100個的編譯選項可用。具體的可以使用命令man gcc察看
優化選項:用GCC編譯C/C++代碼時,它會試著用最少的時間完成編譯並且編譯後的代碼易於調試。易於調試意味著編譯後的代碼與源代碼有同樣的執行順序,編譯後的代碼沒有經過優化。有很多的選項可以告訴GCC在耗費更多編譯時間和犧牲易調試性的基礎上產生更小更快的可執行文件。這些選項中最典型的就是-O和-O2。-O選項告訴gcc對源代碼進行基本優化。-O2選項告訴GCC產生盡可能小的和盡可能快的代碼。還有一些很特殊的選項可以通過man gcc察看。
調試和剖析選項:GCC支持數種調試剖析選項。在這些選項中最常用的是-g和-pg.-g選項告訴gcc產生能被GNU調試器(如gdb)使用的調試信息,以便調試用戶的程序。-pg選項告訴gcc在用戶的程序中加入額外的代碼,執行時,產生gprof用的剖析信息以顯示程序的耗時情況。
3、使用gdb
使用方法:在命令行中鍵入gdb並按回車就可以運行gdb了,啟動gdb後,能在命令行上制定很多的選項,也可以下面的方式來運行gdb: gdb filename 用這種方式運行gdb時,能直接指定想要調試的程序。在命令行上健入gdb -h得到一個有關gdb的選項的說明簡單列表。
編譯代碼以供調試,為了使gdb工作,必須使程序在編譯時包含調試信息,調試信息包含程序里的每個變數的類型,在可執行文件里的地址映射以及源代碼的行號。gdb利用這些信息使源代碼和機器碼相關聯。
關於gcc的大體就寫這么多吧,更多的信息可以查找幫助,記得學習Linux的一大武器man或者info命令,下次在介紹一下使用C/C++編寫大型程序的makefile文件和make命令。
④ 如何用GCC在linux下編譯C語言程序
在Linux下面,如果要編譯一個C語言源程序,我們要使用GNU的gcc編譯器,假設我們有下面一個非常簡單的源程序(hello.c):
int main(int argc,char **argv)
{
printf("Hello Linux
");
}
要編譯這個程序,我們只要在命令行下執如橘耐行:
gcc -o hello hello.c
gcc 編譯器就會為我們生成一個hello的可執行渣春文件.執行./hello就可以看到程
序的輸出結果了
⑤ 如何在Windows平台下使用GCC編譯器
先去Cygwin網站(www.cygwin.com)下載一個安裝文件(setup.exe),這個文件體積很小,只有不到300KB。然後雙擊運行setup.exe。因為是第一次安裝,所以必須凱則激選擇從Internet在線安裝,也可以先從Internet下載安裝文件,然後再手動安裝。我選擇後者,因為這樣,以後我可以在不聯網的時候也能安裝。
2、環境變數的配置
在(系統屬性-->高級-->環境變數-->系統變數 中)(以下目錄都根據自己的電腦MinGW所在位置不同而改變)
a.在PATH的值中加入「C:Program FilesMinGWStudioMinGWin」。這是尋找gcc編譯器的路徑。如果PATH中還有其他內容,需要用英文狀態下分號進行分割
b.新建LIBRARY_PATH變數,在其值中加入「C:Program FilesMinGWStudioMinGWlib」。這是標准庫存放的路徑。
c.新建C_INCLUDE_PATH變數,在其值中加入「C:Program FilesMinGWStudioMinGWinclude」。這是Include查找頭文件的路徑。
3、驗證gcc是否正常運行
在cmd控制台窗口下面,輸入gcc -v。若已經成功安裝好,會顯示gcc的版本信息。
⑥ 在ubuntu系統中如何用GCC編譯運行一個C程序
1、確定安裝了gcc編譯器後,接下來用vim編輯一個c文件。