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

1
4

Một makefile là một cơ sở dữ liệu văn bản chứa cách luật, các luật này sẽ báo

cho chương trình make biết phải làm gì và làm như thế nào. Một luật bao gồm các
thành phần như sau:

Đích (target) – cái mà make phải làm

Một danh sách các thành phần phụ thuộc (dependencies) cần để tạo ra đích

Một danh sách các câu lệnh để thực thi trên các thành phần phụ thuộc

Khi được gọi, GNU make sẽ tìm các file có tên là GNUmakefile, makefile hay

Makefile. Các luật sẽ có cú pháp như sau:

target: dependency1, dependency2, ….

command

command

……

Target thường là một file như file khả thi hay file object ta muốn tạo ra.

Dependency là một danh sách các file cần thiết như là đầu vào để tạo ra target.
Command là các bước cần thiết (chẳng hạn như gọi chương trình dịch) để tạo ra
target.
Dưới đây là một ví dụ về một makefile về tạo ra một chương trình khả thi có tên là
editor (số hiệu dòng chỉ đưa vào để tiện theo dõi, còn nội dung của makefile không
chứa số hiệu dòng). Chương trình này được tạo ra bởi một số các file nguồn:

editor.c,

editor.h, keyboard.h, screen.h,

screen.c, keyboard.c.

1. editor : editor.o screen.o keyboard.o

2. gcc -o editor.o screen.o keyboard.o

3. editor.o : editor.c editor.h keyboard.h screen.h

4. gcc -c editor.c

5. screen.o : screen.c screen.h

6. gcc -c screen.c

7. keyboard.o : keyboard.c keyboard.h

8. gcc -c keyboard.c

9. clean:
10. rm *.o

Để biên dịch chương trình này ta chỉ cần ra lệnh make trong thư mục chứa file

này.

Trong makefile này chứa tất cả 5 luật, luật đầu tiên có đích là editor được gọi là

đích ngầm định. Đây chính là file mà make sẽ phải tạo ra, editor có 3 dependencies
editor.o, screen.o, keyboard.o. Tất cả các file này phải tồn tại thì mới tạo ra được
đích trên. Dòng thứ 2 là lệnh mà make sẽ gọi thực hiện để tạo ra đích trên. Các dòng
tiếp theo là các đích và các lệnh tương ứng để tạo ra các file đối tượng (object).

7.3.3. Làm vic vi file

Trong Linux, để làm việc với file ta sử dụng mô tả file (file descriptor). Một

trong những thuận lợi trong Linux và các hệ thống UNIX khác là giao diện file làm
như nhau đối với nhiều loại thiết bị. Đĩa từ, các thiết bị vào/ra, cổng song song, giả