Về gcc và g++

Về gcc và g++ Nếu thử man gcc và man g++ trên terminal, bạn đều thấy đều trỏ về 1 page với tiêu đề: gcc – GNU project C and C++ compiler Vậy thì khác biệt ở 2 giữa chúng là gì? Cơ bản nhất, gcc sử dụng để biên dịch các file .c, ngược

Về gccg++

Nếu thử man gccman g++ trên terminal, bạn đều thấy đều trỏ về 1 page với tiêu đề:

gcc – GNU project C and C++ compiler

Vậy thì khác biệt ở 2 giữa chúng là gì? Cơ bản nhất, gcc sử dụng để biên dịch các file .c, ngược lại với g++ sẽ biên dịch các file .cpp. Thực tế, có thể dùng cả 2 trình biên dịch cho cả 2 ngôn ngữ, tuy nhiên vẫn có sự khác biệt: g++ nếu biên dịch file c sẽ vẫn coi nó là file cpp bình thường, còn gcc sẽ coi ccpp là riêng biệt.

Ngoài ra, cái khác biệt nhất mà mình muốn đề cập đến:

gcc g++
Using g++ to link the object files, files automatically links in the std C++ libraries. gcc does not do this.

Ví dụ cho khác biệt trên là thư viện math.h, ví dụ với đoạn code c sau:

#include<math.h>intisPrime(int number){if(number <=1){return0;}double sqrtOfNumber =sqrt(number);for(int i =2; i < sqrtOfNumber; i++){if(number % i ==0){return0;}}return1;}

Sử dụng câu lệnh gcc main.c -o main, gcc sẽ vả vào mặt bạn với lỗi sau:

/usr/bin/ld: /tmp/cccVnyTo.o: infunction`isPrime':
main.c:(.main+0x5a): undefined reference to `sqrt'

Tuy nhiên, nếu biên dịch lại với g++, vẫn câu lệnh có cú pháp trên: g++ main.c -o main, chương trình sẽ chạy ngon ơ.

Khác biệt ở đây chính thư viện math.h không được link 1 cách tự động khi sử dụng gcc, ngược lại với g++. Nên nếu muốn sử dụng gcc để biên dịch, bạn cần thêm arg -lm để link các thư viện maths.

$ gcc main.c -o main -lm

Bonus

Có thể coi g++ tương đương với gcc -xc++ -lstdc++ -shared-libgcc.

References

Nguồn: viblo.asia

Bài viết liên quan

9 Mẹo lập trình Web “ẩn mình” giúp tiết kiệm hàng giờ đồng hồ

Hầu hết các lập trình viên (kể cả những người giỏi) đều tốn thời gian x

Can GPT-4o Generate Images? All You Need to Know about GPT-4o-image

OpenAI‘s GPT-4o, introduced on March 25, 2025, has revolutionized the way we create visual con

Khi nào nên dùng main, section, article, header, footer, và aside trong HTML5

HTML5 đã giới thiệu các thẻ ngữ nghĩa giúp cấu trúc nội dung web một cách có

So sánh Webhook và API: Khi nào nên sử dụng?

Trong lĩnh vực công nghệ thông tin và phát triển phần mềm, Webhook và API là hai th