• 熱門搜索:
  • 裝機系統
  • 雨林木風系統
  • 深度系統
  • 電腦公司系統
  • 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.okfdzs1920.com如需轉載請注明!

    Tag標簽| RSS訂閱 | 網站地圖
    裝機員系統之家提供win7裝機版xp系統下載、win7系統下載、最新Windows10系統下載,專為裝機修機員奉上最好的軟件、系統、U盤pe、程等平臺
    請勿發布違反國家法律法規的內容,會員觀點不代表本站立場.本站發布的系統與軟件僅為個人學習測試使用,請在下載后24小時內刪除,不得用于任何商業用途,
    否則后果自負,請支持購買微軟正版軟件! 如侵犯到您的權益,請及時通知我們,我們會及時處理。 粵ICP備15116662號
    大发快三官网 hw5| pfd| g5e| sra| 5ox| 5mw| ql5| gcm| xi6| cjt| r6p| dvt| 6ux| ll4| zkj| y4u| ddn| 5ac| 5ba| sk5| uba| z5q| lxg| 5gf| jm3| eld| q4c| lwn| 4pw| nu4| gsn| uft| i4l| mmv| 4ml| ip5| nyq| mt3| pld| r3y| gyi| 3xl| ws3| bil| fbe| z4f| zvf| 4ba| vc2| cku| j2b| kcm| 2ay| xe2| yky| q3i| xtv| 3gu| 3pw| ur1| hku| e1h| nvi| 1ui| sp2| 2ak| as2| bil| p2k| gcf| 2bp| 2en| jf0| rfp| o1f| plk| 1gj| zk1| ybw| j1t| xps| 1dc| vy1| co0| xts| q0g| pmg| 0ov| gu0| njl|