輕鬆理解C語言相關的編譯器gcc和g加加
很多人使用了很久的C語言,但是對gcc,gcc-c++,g++這些還是比較模糊。試著在百度上找一下,到處都是同一篇文章在轉來轉去,裡面也寫的比較抽象。我這裡先總結一下本人的理解然後用試驗來描述一下。
先總結的來看:
1:gcc可以用來編譯C語言和C++:但是gcc只能鏈接C庫,不能鏈接C++庫;
2:g++可以鏈接C++庫,但是它是通過調用gcc來編譯,因此:它也可以編譯C和C++,但它能編譯的條件是要先存在gcc。
所以通常:如果只有C語言程序,就只要安裝gcc即可搞定,因為它既可以編譯C,也可以鏈接C庫,所以可以最終生成二進位程序。
如果有C++程序,那麼gcc不能鏈接C++庫,所以還需要加個g++來鏈接C++庫。
結論:
只有C程序,就只要gcc(它不能鏈接C++庫,所以最終生成不了二進位可執行程序)
如果有C++程序,就要gcc和g++一起(因為g++要調用gcc來編譯)。
想要一起學習C++的可以加裙三四零六五一六八七,裙內有各種資料滿足大家,歡迎加裙
-------------------------------查看過程:
以下使用的環境是Centos 6.5 32位:
測試時間:2017年6月2日 16:40
gcc-c++可以看成是g++.exe(windows下的理解方式)的包名,也就是gcc-c++內含g++.exe;
查看安裝了的:
或者(yum 安裝的是rpm包,也可以用rpm包的查看方式):
現在寫個C++程序:
使用vim編輯器:
查看一下:
因為gcc鏈接不了C++庫,所以一通的undefined:
也沒有結果生成:
改用g++來弄:
可見:g++就可以了(編譯的時候g++會調用gcc來編譯【gcc可以編譯c和c++】,鏈接的時候用g++來連接)。
運行,看到列印東西了:
現在弄個C語言:
使用vim編輯器:
保存後查看源代碼:
一開始只有:
使用gcc編譯(它可以編譯C並鏈接C庫)
可見,成功生成了a.out
執行a.out
因為C程序中沒有換行,所以這裡輸出自然沒換行,但這就是對了。
想要一起學習C++的可以加裙三四零六五一六八七,裙內有各種資料滿足大家,歡迎加裙
※多年後再回頭看C語言對未來職業的重大意義
※C語言中轉義字元那些事兒
※C語言學習之基本字符集
※C語言初學者不可錯過的教程
※C語言練習——小白必看
TAG:C加加 |
※自製Monkey編程語言編譯器:增加數組操作API和Mapsh數據類型
※解讀gcc和g++編譯器分別對c與c++文件影響
※Julia官宣:為機器學習構建一種語言和編譯器
※GameMaker 偏門理論:關於反編譯器
※棄用微軟 C+編譯器,Win版Chrome 改用 Clang
※Windows 版本的 Chrome 停用微軟的編譯器 改用 Clang
※TVM:Deep Learning模型的優化編譯器
※升級Azure、開源Q#編譯器和模擬器,一文看盡微軟Build大會
※C sharp 翻身?微軟重寫開源的 C sharp 編譯器!
※TVM: Deep Learning模型的優化編譯器(強烈推薦, 附踩坑記錄)
※Renesas Synergy增加對IAR Systems先進編譯器技術的支持,進一步鞏固該平台在IOT領域的性能優勢
※一統所有AI晶元:Facebook揭秘深度學習編譯器Glow
※業界 | 一統所有AI晶元:Facebook揭秘深度學習編譯器Glow
※Valve為AMD GPU開發新的Mesa著色器編譯器,編譯速度更快,遊戲幀數有所提高
※Dropbox創建了一種新的Python編譯器:mypyc
※助力 Android 抗衡 iOS,華為發布方舟編譯器!
※Unity編譯器測試框架
※我是如何提升 Rust 編譯器的速度?
※從GPUTurbo和方舟編譯器可看出,華為開發操作系統很容易
※藉助 Valve 的新編譯器,Linux 遊戲在 AMD GPU 中獲得了性能提升