vault backup: 2022-09-26 21:14:06

Affected files:
.obsidian/workspace
01. 個人/02. 專注Study/C++/GCC.md
This commit is contained in:
2022-09-26 21:14:06 +08:00
parent f04ce44296
commit 7267b86862
2 changed files with 24 additions and 5 deletions

View File

@@ -0,0 +1,19 @@
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