當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 編程軟體 » linux的編譯器

linux的編譯器-九游会j9娱乐平台

發布時間: 2024-07-06 16:47:10

linux操作系統中默認安裝的c語言編譯系統是

linux操作系統中默認安裝的c語言編譯系統是gcc(gnu compiler collection),是linux下最常用的c語言編譯器,是gnu項目中符合ansi,c標準的編譯系統,能夠編譯用c、object c等語言編寫的程序。

同時它可以通過不同的前端模塊來支持各種語言,如java、fortran、pascal、mola,3和ada等。

c語言的標准

1.1 k,rc

1973年,dennis m ritchie設計和實現了c語言,從那以後使用者逐漸增加。

1978年,kernighan 和 ritchie 合著了《the c programming language》,這本書定義的c語言被稱為 k,rc 。

1.2 標准 c

隨著c語言使用日益廣泛,出現了許多新問題,人們迫切希望對c語言進行標准化。

第一個標准:c89

1983年,ansi成立了一個委員會x3j11,對c語言進行標准化。

1989年,ansi 批准了第一個c語言標准 x3,159-1989,並於1990年公布,被稱為 ansic、c89 或 c90。

1990年,這個標准又被批准為iso標准:iso,iec 9899:1990 。

ansic標准被iso採納,並且iso發布的修訂版也被ansi採納,因此ansi標准和iso標准實際上沒有技術區別。這些名稱的含義是相同的:ansi c、iso c、標准c。

1994年和1996年,iso發布了兩個技術更正,更正了1990isoc標准中的錯誤。

第二個標准:c94

1995年,iso發布了1990isoc標準的一個補充,稱為amd1。擴充後的標准被稱為c94或c95。

第三個標准:c99

1999年,iso發布了一個新版本的isoc標准:iso,iec9899:1999,稱為c99。

2001年、2004年和2007年,iso發布了三個技術更正,更正了1999isoc標准中的錯誤。

第四個標准:c11

2011年,iso發布了一個新版本的isoc標准:iso,iec9899:2011,稱為c11。c11 是 c語言的最新標准。

1.3 gnuc

1984年,richard stallman 發起了gnu計劃,它的目標是開發一個完整且自由的unix-like操作系統(gnu系統)。

gnu系統是一個完整的操作系統,包括操作系統內核和各種工具軟體。各種gnu系統的變種(例如redhat、ubuntu等)已經被廣泛使用,它們使用的操作系統內核都是linux。雖然這些系統經常被稱為linux,但准確地說,它們是gnu/linux系統。

gnu在編寫linux時擴展了標准c,稱為gnuc。

gnu c的擴展詳見:extensions to the c language family

gnu c也稱為linux c,一般用於linux上的開發,而標准c可以跨平台。

gnu c使用的編譯器是gcc。

② linux下如何編譯,運行c程序需要安裝編譯器嗎

首先一定要安裝 gcc (或者 cc )編譯器。然後在 linux 系統下,首先使用 vi 全屏幕編輯程序編輯一個後綴名為 .c 的文件,然後使用 gcc 編譯器對你的 c 語言源程序進行編譯、連接。最後才能夠運行生成後的運行文件(如果你的源程序沒有任何編譯錯誤的話)。當然了,在 gcc 的編譯過程中,會有很多選擇項。這個就是靠編程經驗了。

舉例如下:
gcc test.c -o myrunfile ( -o 選項指定輸出的運行文件名為:myrunfile,如果不指定 -o 選項的話,預設的運行文件名為:a.out)

③ linux下做c語言開發,有哪些好用的工具,召喚最佳答案

linux下的主要的c語言編譯器
1. gcc
大名鼎鼎的gnu的c/c /obj-c編譯器, 當前版本是2.8.1, 但據說與2.7.*有兼容性
問題. 而使用較廣的是gcc 2.7.2系列, 如redhat5中帶的就是gcc 2.7.2.3
有時候在cyrix上用gcc會有些問題, 因此有一套針對cyrix特點的gcc 2.7.2.3
我這里有redhat5的rpms ftp://166.111.68.98/pub/warez-cd/huricane-contrib
(cyrix 2.7.2.3 & 2.8.1)

其基本結構就是一個front end和back end,
/usr/bin/gcc 就是個front end, 其kernel東西都放在 /usr/lib/gcc-lib下面,
cpp是c預處理器, cc1*的1m多的就是編譯器的核心模塊了
cc1 c compiler
cc1plus c compiler
cc1obj object-c compiler
但gcc並沒有集成fortran的compiler, 一般要用f2c轉成c後才用gcc編譯
好象也還有個g77 fortran compiler吧?

gcc的不斷發展完善使許多commercial compiler都相形見絀, 那當然, gcc/emacs
都由gnu創始人richard stallman手創, 是gnu的旗艦產品, 質量當然沒得說了:-)
由於 unix平台的高度可移植性, gcc幾乎在各種常見的unix平台上都有, 即使是
win32/dos也有gcc的port. 比如說該死的solaris普通版本連compiler都沒有, 也
就只好用gcc了...

2. egcs(experimental/enhanced gnu compiler system)
這是gcc的發展方向, 把fortran等編譯器集成進來, 也許還會有pascal?
它的構造很清晰, 把對gcc的各種改進/port都集成回去. 如gcc 2.7系列據說是
沒有對pentium進行優化的, 而egcs則把pgcc對pentium的一些優化集成進去了
現在gcc的開發工作主要就是egcs, 由cygnus公司領導(?), 這cygnus公司還是很
不錯的, 還出了gnu-win32, sourcenavigator等, 是gnu的堅實擁護者:-))

http://egcs.cygnus.com/

包括了c/c /obj-c/fortran 編譯器, 當前最新版本1.0.2, 還在不斷開發中
昨天download發現kde beta4都用egcs編譯了 :-)

fortran集成進來後在/usr/lib/gcc-lib下又多了個f771的back end, 當然
還是g77/f77 編譯
我這里有egcs 1.0.2 的rpm 在rh5-cd/collect下面

3. pgcc(pentium gcc)
http://www.gcc.ml.org/
針對pentium cpu進行了編譯器優化的compiler
pgcc據說用jpeg壓縮解壓縮測試最快可比gcc快 30%!
新版的pgcc都是基於egcs的, 以一個patch的形式release

嗨!真是的……

④ linux中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}目錄。

⑤ linux中常用編譯器是什麼

linux 下可用的編譯器有 gcc、egcs 和 pgcc,其中最常用的編譯器便是 gcc。

gcc 起初是 gnu 推出的 c語言編
譯器,用於類 unix 系統下的編程,所以名為 gnu c compiler 。隨著眾多自由開發者的加入,gcc
發展迅速,如今已成為一個支持眾多語言的編譯器了,其中包括 c、c 、ada、object c 和 java 等,以至於 gcc 開始被擴展為
gnu compiler collection ,也就是「gnu 編譯器集合」的意思。

gcc用法:

1、gcc基本用法及其選項

gcc 或 g 的用法跟參數含義幾乎一樣,他們最基本的用法是:

2、只編譯子程序(-c)

3、產生目標文件(-o)

4、附加調試信息(-g)

5、多文件編譯

6、連接庫文件。

⑥ linux里gcc的執行方式是什麼,

什麼是gcc?gcc是由gnu之父stallman所開發的linux下的編譯器,全稱為gnu compiler collection, 目前可以編譯的語言包括:c, c , objective-c, fortran, java, and ada, 可以在其官方頁面找到更加詳細的信息什麼是gcc?gcc是一個原本用於unix-like系統下編程的編譯器。不過,現在gcc也有了許多win32下的移植版本。這要感謝internet上眾多程序員的共同努力。gcc的歷史
gcc是gnu公社的一個項目。是一個用於編程開發的自由編譯器。最初,gcc只是一個c語言編譯器,他是gnu c compiler 的英文縮寫。隨著眾多自由開發者的加入和gcc自身的發展,如今的gcc以經是一個包含眾多語言的編譯器了。其中包括 c,c ,ada,object c和java等。所以,gcc也由原來的gnu c compiler變為gnu compiler collection。也就是 gnu編譯器家族 的意思。當然,如今的gcc藉助於他的特性,具有了交叉編譯器的功能,即在一個平台下編譯另一個平台的代碼。
直到現在,gcc的歷史仍然在繼續,他的傳奇仍然被人所傳頌。gcc有什麼作用?linux系統下的gcc(gnu c compiler)是gnu推出的功能強大、性能優越的多平台編譯器,是gnu的代表作品之一。gcc是可以在多種硬體平台上編譯出可執行程序的超級編譯器,其執行效率與一般的編譯器相比平均效率要高20%~30%。gcc有什麼作用?gcc編譯器能將c、c 語言源程序、匯程式化序和目標程序編譯、連接成可執行文件,如果沒有給出可執行文件的名字,gcc將生成一個名為a.out的文件。在linux系統中,可執行文件沒有統一的後綴,系統從文件的屬性來區分可執行文件和不可執行文件。而gcc則通過後綴來區別輸入文件的類別,下面我們來介紹gcc所遵循的部分約定規則。
.c為後綴的文件,c語言源代碼文件;
.a為後綴的文件,是由目標文件構成的檔案庫文件;
.c,.cc或.cxx 為後綴的文件,是c 源代碼文件;
.h為後綴的文件,是程序所包含的頭文件;
.i 為後綴的文件,是已經預處理過的c源代碼文件;
.ii為後綴的文件,是已經預處理過的c 源代碼文件;
.m為後綴的文件,是objective-c源代碼文件;
.o為後綴的文件,是編譯後的目標文件;
.s為後綴的文件,是匯編語言源代碼文件;
.s為後綴的文件,是經過預編譯的匯編語言源代碼文件。gcc有什麼作用?gcc的執行過程
雖然我們稱gcc是c語言的編譯器,但使用gcc由c語言源代碼文件生成可執行文件的過程不僅僅是編譯的過程,而是要經歷四個相互關聯的步驟∶預處理(也稱預編譯,preprocessing)、編譯(compilation)、匯編(assembly)和連接(linking)。
命令gcc首先調用cpp進行預處理,在預處理過程中,對源代碼文件中的文件包含(include)、預編譯語句(如宏定義define等)進行分析。接著調用cc1進行編譯,這個階段根據輸入文件生成以.o為後綴的目標文件。匯編過程是針對匯編語言的步驟,調用as進行工作,一般來講,.s為後綴的匯編語言源代碼文件和匯編、.s為後綴的匯編語言文件經過預編譯和匯編之後都生成以.o為後綴的目標文件。當所有的目標文件都生成之後,gcc就調用ld來完成最後的關鍵性工作,這個階段就是連接。在連接階段,所有的目標文件被安排在可執行程序中的恰當的位置,同時,該程序所調用到的庫函數也從各自所在的檔案庫中連到合適的地方。gcc有什麼作用?gcc的基本用法和選項
在使用gcc編譯器的時候,我們必須給出一系列必要的調用參數和文件名稱。gcc編譯器的調用參數大約有100多個,其中多數參數我們可能根本就用不到,這里只介紹其中最基本、最常用的參數。
gcc最基本的用法是∶gcc [options] [filenames]
其中options就是編譯器所需要的參數,filenames給出相關的文件名稱。
-c,只編譯,不連接成為可執行文件,編譯器只是由輸入的.c等源代碼文件生成.o為後綴的目標文件,通常用於編譯不包含主程序的子程序文件。
-o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預設的可執行文件a.out。
-g,產生符號調試工具(gnu的gdb)所必要的符號資訊,要想對源代碼進行調試,我們就必須加入這個選項。
-o,對程序進行優化編譯、連接,採用這個選項,整個源代碼會在編譯、連接過程中進行優化處理,這樣產生的可執行文件的執行效率可以提高,但是,編譯、連接的速度就相應地要慢一些。
-o2,比-o更好的優化編譯、連接,當然整個編譯、連接過程會更慢。
-idirname,將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預編譯過程中使用的參數。c程序中的頭文件包含兩種情況∶
a)#include
b)#include 「myinc.h」
其中,a類使用尖括弧(< >),b類使用雙引號(「 」)。對於a類,預處理程序cpp在系統預設包含文件目錄(如/usr/include)中搜尋相應的文件

⑦ linux模塊編譯時,默認的編譯器是什麼怎麼有時候指定了cc=arm-linux- 但是command裡面沒有用到cc

默認的編譯器是gcc。
在linux 里 gcc 便是cc,兩者是沒區別的,gcc前面的g是代表gnu(至於gnu的意思,你可以查網路之類,關於linux的歷史了)的意思。

假如如沒有cc,你查下gcc有沒有。假如沒有,說明你裝的是交叉編譯工具arm-linux-gcc。
cc=arm-linux- 應該是 cc=arm-linux-gcc。
arm-linux-gcc 應該是用來編譯嵌入式的。

熱點內容
resin下jsp不能正常編譯 發布:2024-07-17 16:34:44 瀏覽:229
sqlserver如何切換主備伺服器 發布:2024-07-17 16:23:02 瀏覽:299
mc18伺服器ip 發布:2024-07-17 16:23:02 瀏覽:379
仙境傳說手游腳本 發布:2024-07-17 16:09:24 瀏覽:691
matlab命令窗口和新建腳本 發布:2024-07-17 15:51:26 瀏覽:375
建ftp文件夾 發布:2024-07-17 15:51:26 瀏覽:955
魔獸撿物腳本 發布:2024-07-17 15:27:56 瀏覽:130
開發ip伺服器 發布:2024-07-17 15:24:42 瀏覽:388
安卓系統視頻製作哪個好用 發布:2024-07-17 15:10:47 瀏覽:210
androidapk結構 發布:2024-07-17 15:10:43 瀏覽:945
网站地图