Files
Obsidian-Main/01. 個人/02. 專注Study/C++/GCC.md
Awin Huang 7267b86862 vault backup: 2022-09-26 21:14:06
Affected files:
.obsidian/workspace
01. 個人/02. 專注Study/C++/GCC.md
2022-09-26 21:14:06 +08:00

1.3 KiB
Raw Blame History

GCC的全稱是GNU Compiler Collection是GNU工具鏈中的一種。GCC不僅支持C/C++語言還支持Fortran/Ada/Java等語言的編譯。GCC和gcc是兩個概念GCC是工具鏈的集合裡面除了gcc/g++還包含了cclcclplus等組件。gcc/g++只是GCC工具鏈的一個子集。

g++和gcc的區別

gcc可以判斷出目標程序所使用編程語言的類別會把xxx.c文件當作C語言編譯把xxx.cpp文件當作C++語言編譯。而g++只把xxx.c和xxx.cpp一律都當作C++語言來編譯。在編譯C++文件的時候g++會自動鏈接一些標準庫或基礎庫而gcc不會。當正在編譯的C++代碼文件依賴STL標準庫的時候為了使用STLgcc命令需要增加參數lstdc++。因此雖然gcc和g++都可以編譯C++語言程序但是使用g++會更方便一些。

常見文件副檔名

  • 目標文件:
    • xxx.o操作系統Linux, Mac
    • xxx.obj, 操作系統windows
  • 二進製文件:
    • xxx(沒有後綴名), 操作系統Linux, Mac, FreeBSD,
    • xxx.exe, 操作系統windows
    • xxx.hex操作系統嵌入式系統
  • 共享庫文件,也叫動態庫文件:
    • xxx.dll, 操作系統windows
    • xxx.so, 操作系統Linux
    • xxx.dylib, 操作系統Mac\
  • 靜態庫文件
    • xxx.a