1
4
fi
done
}
7.3. Lập trình C trên UNIX
7.3.1. Trình biên dịch 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;
}
Một chương trình điển hình dùng để minh hoạ việc sử dụng 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.