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

Cấu hình Prisma v7 Với Nest.js Mới nhất

Setup Prisma v7 trong Nest.js Bài viết dành cho ai mới học Nest.js và chọn prisma làm OR

Tấn Công Ứng Dụng Web: Mối Đe Dọa Hàng Đầu – Phần 2

viết lại nội dung này ” Phát hiện các cuộc tấn công Cross Site Scripting (XSS)

AI Chatbot 2025: Xu Hướng Tất Yếu Cho Doanh Nghiệp Dẫn Đầu

Giới thiệu AI chatbots đã trải qua một hành trình đáng kể, từ những công cụ t

Tấn Công Ứng Dụng Web: Mối Đe Dọa Hàng Đầu – Phần 1

Tấn công web là gì? Ứng dụng web là các ứng dụng cung cấp dịch vụ cho người