Công cụ GNUmake

Một phần của tài liệu Quan-tri-mang-nuy-vn-17308_-_He_dieu_hanh_ma_nguon_mo.pdf (Trang 81 - 82)

Trong trƣờng hợp ta viết một chƣơng trình rất lớn đƣợc cấu thành bởi từ nhiều file, việc biên dịch sẽ rất phức tạp vì phải viết các dòng lệnh gcc rất là dài. Để khắc phục tình trạng này, công cụ GNU make đã đƣợc đƣa ra. GNU make đƣợc giải quyết bằng cách chứa tất cả các dòng lệnh phức tạp đó trong một file gọi là makefile. Nó cũng làm tối ƣu hóa tiến trình dịch bằng cách phát hiện ra những file nào có thay đổi thì nó mới dịch lại, còn file nào không bị thay đổi thì nó sẽ không làm gì cả, vì vậy thời gian dịch sẽ đƣợc rút ngắn.

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

- 81 - 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).

Một phần của tài liệu Quan-tri-mang-nuy-vn-17308_-_He_dieu_hanh_ma_nguon_mo.pdf (Trang 81 - 82)