g++ (GNU C++ Compiler)
g++ เป็นคอมไพเลอร์สำหรับภาษา C++ ใน Linux ใช้คอมไพล์ไฟล์ทั้ง .c และ .cpp เป็น C++ code
คำสั่งคอมไพล์
g++ program.cpp -o filename
filename- ชื่อไฟล์ executable ที่จะสร้าง
ตัวอย่าง
#include <iostream>
using namespace std;
int main() {
int a = 20;
cout << "The value of a : " << a;
return 0;
}
การคอมไพล์และรัน
$ g++ -o main *.cpp
$ ./main
The value of a : 20
gcc (GNU C Compiler)
gcc เป็นคอมไพเลอร์สำหรับภาษา C ใน Linux ใช้คอมไพล์ไฟล์ .c เท่านั้น
คำสั่งคอมไพล์
gcc program.c -o filename
ตัวอย่าง
#include <stdio.h>
int main() {
int a = 20;
printf("The value of a : %d", a);
return 0;
}
การคอมไพล์และรัน
$ gcc -o main *.c
$ ./main
The value of a : 20
ความแตกต่างสำคัญ
| คุณสมบัติ | gcc | g++ |
|---|---|---|
| ภาษาหลัก | C | C++ |
| ไฟล์ .c | คอมไพล์เป็น C | คอมไพล์เป็น C++ |
| ไฟล์ .cpp | Error / ไม่รองรับ | คอมไพล์เป็น C++ |
| Linking | ไม่ link libstdc++ อัตโนมัติ | Link libstdc++ อัตโนมัติ |
| Predefined macros | __GNUC__ | __GNUC__, __cplusplus |
ข้อสังเกตเพิ่มเติม
- gcc สามารถคอมไพล์ C++ ได้ถ้าระบุ
-lstdc++แต่ไม่แนะนำ - g++ คอมไพล์ C code ได้แต่จะ enforce C++ rules (stricter type checking)
- สำหรับโปรเจคผสม C/C++ ควรใช้ g++ คอมไพล์ทั้งหมด หรือใช้ build system (CMake, Makefile)
- ทั้งคู่เป็นส่วนหนึ่งของ GCC (GNU Compiler Collection)
คำสั่งที่มีประโยชน์
# คอมไพล์พร้อม warning ทั้งหมด
g++ -Wall -Wextra -std=c++17 program.cpp -o program
# คอมไพล์ C ด้วยมาตรฐาน C11
gcc -std=c11 -Wall program.c -o program
# ดู version
g++ --version
gcc --version