GIÁO TRÌNH HỆ ĐIỀU HÀNH UNIX - LINUX - Trang 147

1
4

fi

done

}

7.3. Lp trình C trên UNIX

7.3.1. Trình biên dch gcc

Hệ điều hành UNIX luôn kèm theo bộ dịch ngôn ngữ lập trình C với tên gọi là cc (C

compiler). Trong Linux, bộ dịch có tên là gcc (GNU C Compiler) với ngôn ngữ lập trình
không khác nhiều với C chuẩn. Nội dung chi tiết về các ngôn ngữ lập trình trên Linux thuộc
phạm vi của các tài liệu khác.

gcc cho người lập trình kiểm tra trình biên dịch. Quá trình biên dịch bao gồm bốn giai

đoạn:

Tiền xử lý

Biên dịch

Tạp hợp

Liên kết

Ta có thể dừng quá trình sau một trong những giai đoạn để kiểm tra kết quả biên dịch

tại giai đoạn ấy. gcc cũng có thể chấp nhận ngôn ngữ khác của C, như ANSI C hay C
truyền thống. Như đã nói ởQ trên, gcc thích hợp biên dịch C++ hay Objective-C. Ta có thể
kiểm soát lượng cũng như kiểu thông tin cần debug, tất nhiên là có thể nhúng trong quá
trình nhị phân hóa kết quả và giống như hầu hết các trìSnh biên dịch, gcc cũng thực hiện tối
ưu hóa mã.

Trước khi bắt đầu đi sâu vào nghiên cứu gcc, ta xem một ví dụ sau:

#include<stdio.h>
int main (void)
{
fprintf( stdout, “Hello, Linux programming world!\n”);
return 0;
}

Mt chương trình đin hình dùng để minh ho vic s dng gcc

Để biên dịch và chạy chương trình này hãy gõ:

$ gcc hello.c –o hello

$ ./hello

Hello, Linux programming world!

Dòng lệnh đầu tiên chỉ cho gcc phải biên dịch và liên kết file nguồn hello.c, tạo

ra tập tin thực thi, bằng cách chỉ định sử dụng đối số -o hello. Dòng lệnh thứ hai
thực hiện chương trình, và kết quả cho ra trên dòng thứ 3.

Có nhiều chỗ mà ta không nhìn thấy được, gcc trước khi chạy hello.c thông qua

bộ tiền xử lý của cpp, để mở rộng bất kỳ một macro nào và chèn thêm vào nội dung
của những file

#include

. Tiếp đến, nó biên dịch mã nguồn tiền xử lý sang mã obj .

Cuối cùng, trình liên kết, tạo ra mã nhị phân cho chương trình hello.