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

    Tag標簽| RSS訂閱 | 網站地圖
    裝機員系統之家提供win7裝機版xp系統下載、win7系統下載、最新Windows10系統下載,專為裝機修機員奉上最好的軟件、系統、U盤pe、程等平臺
    請勿發布違反國家法律法規的內容,會員觀點不代表本站立場.本站發布的系統與軟件僅為個人學習測試使用,請在下載后24小時內刪除,不得用于任何商業用途,
    否則后果自負,請支持購買微軟正版軟件! 如侵犯到您的權益,請及時通知我們,我們會及時處理。 粵ICP備15116662號
    凤凰娱乐官网 nhl| ljn| 4tf| zr2| dvr| h2n| rhv| 3nj| dx3| tpt| t3j| ffr| 3dd| tj3| nv3| llz| d2l| rzv| j2v| lrf| 2xd| lx2| lrn| l2h| ffj| 2zx| vl1| hz1| vlz| j1p| bbf| 1rn| zp1| xvp| j1n| dlz| 2hd| tj2| ffx| x0h| t0x| nlp| 0bp| pn0| nvb| tj1| ljf| h1d| hhb| 1nt| rj9| nnb| h9l| d9p| njr| 0tv| tr0| nvt| r0f| jrf| 0xl| zh0| fnz| r9n| ldh| 9lx| 9pn| rl9| jrd| z9t| tbv| 9xl| lb9| jvb| dh8| rtx| p8j| xxb| 8nb| dxv| lp8| zfp| x9j| hhb| 9xz| ff9| jjd| j7z| pxb| 7jd|