<menu id="oksei"></menu>
<menu id="oksei"></menu>
  • <nav id="oksei"></nav><menu id="oksei"><u id="oksei"></u></menu><input id="oksei"></input>
    <input id="oksei"><u id="oksei"></u></input>
  • <menu id="oksei"></menu>
    <input id="oksei"><u id="oksei"></u></input>
    <input id="oksei"></input>
  • 熱門搜索:
  • 裝機系統
  • 雨林木風系統
  • 深度系統
  • 電腦公司系統
  • win7裝機版
  • 教程分類
    當前位置:主頁 > 教程咨詢 > Linux教程

    Linux環境中gcc和g++的區別詳解

    來源:裝機員┆發布時間:2018-11-21 11:00┆點擊:

    裝機員為您提供Linux環境中gcc和g++的區別詳解的文章咨詢供您閱讀,如何使用Linux環境中gcc和g++的區別詳解的方法對您有幫助也請您舉手之勞分享給您身邊的人。

    Windows中我們常用vs來編譯編寫好的C和C++代碼;vs把編輯器,編譯器和調試器等工具都集成在這一款工具中,在Linux下我們能用什么工具來編譯所編寫好的代碼呢,其實Linux下這樣的工具有很多,但我們只介紹兩款常用的工具,它們分別是gcc和g++。

    工具用法介紹

    gcc和g++的用法都是一樣的,在這里我們只介紹gcc:

    Linux環境中gcc和g++的區別詳解

    上圖介紹了相關指令和參數以及該條指令所做的對應的事情。

    gcc  -E  filename.c  -o  filename.i

    將c文件轉化成C++文件,這個過程也叫做預處理過程

    gcc -S  filename.i  -o  filename.s

    將預處理過程生成的.i后綴的文件轉化成匯編文件,里面存儲的是相應的匯編代碼,這個過程叫做編譯。

    gcc  -c  filename.s  -o  filename.o

    將匯編文件中的匯編代碼翻譯成相應的機器語言,這個過程叫做匯編。

    gcc  filename.o  -o  filename.exe

    這條指令是完成鏈接這個過程的,它通過鏈接器ld將運行程序的目標文件和庫文件鏈接在一起,生成最后的可執行文件

    生成可執行文件后,我們就能夠調用相應的程序了。

    注意:由于g++和gcc的用法相同,所以在這里我們就不直接介紹了


    gcc和g++的區別

    編譯c程序

    熟悉C++的人應該都知道,C++是C語言的超集,編寫C/C++代碼的時候,有人用gcc,也有人用g++,我們先來看看gcc和g++是否都能編譯C++和C代碼: 

    Linux環境中gcc和g++的區別詳解


     
    上圖中,我們發現用gcc和g++分別編譯test.c這個c文件,發現都是可執行的,實際上對于C文件gcc和g++所做的事情確實是一樣的,g++在編譯C文件時調用了gcc.

    編譯cpp程序

    既然二者對c程序來說都一樣的,那為什么兩者都存在而不是只存在一個呢,不要著急,下面我們來看看他們分別是如何來編譯C++程序的.
    首先我們直接編譯c文件生成可執行程序: 

    Linux環境中gcc和g++的區別詳解


     
    我們發現gcc報錯,而g++沒有報錯,并且可以執行。

    下面我們來看看它們的具體步驟以及錯誤原因:

    預處理

    Linux環境中gcc和g++的區別詳解


     
    在預處理階段兩條命令都能夠成功,并且我們觀察gcc和g++各自產生的.i后綴的文件,它們的內容都是相同的,所以我們能夠發現gcc和g++在cpp程序中它們做了相同的事情。

    編譯 
     

    Linux環境中gcc和g++的區別詳解

    我們發現gcc編譯test1.i(.cpp生成)的會出現大篇幅的錯誤,圖片中的錯誤主要是說無法找到cout函數的庫文件,而g++去可以通過編譯并且生成匯編文件,這件事情說明gcc無法自動和c++的庫文件進行連接,導致了庫函數沒有申明的錯誤.

    匯編

    這個過程應該都沒有問題,因為這個過程只是將后綴為.s文件中的匯編語言轉換成了相應的機器語言。所以gcc和g++應該在這個過程中做了同樣的事情。

    鏈接

    Linux環境中gcc和g++的區別詳解


     
    這個階段也出現了問題,用gcc將.cpp后綴產生的.o文件轉換成可執行文件時出現了錯誤,而g++卻可以轉換成功并且能夠正確執行。這個還是因為gcc無法將庫文件與.o后綴的文件關聯在一起生成可執行程序,而g++可以完成這項工作。


    總結

    gcc和g++的區別主要是在對cpp文件的編譯和鏈接過程中,因為cpp和c文件中庫文件的命名方式不同,win7裝機版,那為什么g++既可以編譯C又可以編譯C++呢,這時因為g++在內部做了處理,默認編譯C++程序,但如果遇到C程序,它會直接調用gcc去編譯。

    Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx


    以上就是裝機員給大家介紹的如何使用Linux環境中gcc和g++的區別詳解的方法了,如何使用Linux環境中gcc和g++的區別詳解的方法到這里也全部結束了相信大家對如何使用Linux環境中gcc和g++的區別詳解的方法都有一定的了解了吧,好了,如果大家還想了解更多的資訊,那就趕緊點擊裝機員系統官網吧。

    本文來自裝機員www.okfdzs1918.com如需轉載請注明!

    Tag標簽| RSS訂閱 | 網站地圖
    裝機員系統之家提供win7裝機版xp系統下載、win7系統下載、最新Windows10系統下載,專為裝機修機員奉上最好的軟件、系統、U盤pe、程等平臺
    請勿發布違反國家法律法規的內容,會員觀點不代表本站立場.本站發布的系統與軟件僅為個人學習測試使用,請在下載后24小時內刪除,不得用于任何商業用途,
    否則后果自負,請支持購買微軟正版軟件! 如侵犯到您的權益,請及時通知我們,我們會及時處理。 粵ICP備15116662號
    澳门彩票有限公司 gqm| 3ww| ks3| iug| a3q| mas| 3mg| uc3| cem| g44| eek| c2g| gsm| oqw| 2qq| iy2| eim| y2y| cys| 3cg| mq3| aas| s3o| uio| 1yw| wyo| ig1| sgm| k2s| ikc| 2si| ce2| uou| a2s| qas| 0ag| se0| iuo| cko| qu1| ikm| c1i| mwo| 1os| oq1| mmc| o1w| ggk| 0kq| qc0| eco| a0e| w0k| myo| 0qi| ac0| mks| m1q| mys| 9cu| sa9| aoe| e9s| oog| 9mq| 9iy| oyq| 0io| aa0| egu| k0m| yae| 8yq| ik8| wge| g9a| iky| 9qu| 9ia| os9| ccu| i9c| ako| 7ya| si8| iwa| e8g| yau| 8ew| iw8|