« Home « Kết quả tìm kiếm

Công cụ hỗ trợ biên dịch project


Tóm tắt Xem thử

- Công cụ hỗ trợ biên dịch project Những vấn đề khi biên dịch  Một chương trình đơn giản.
- Nhiều dòng lệnh  Nhiều module  Nhiều người tham gia viết Những vấn đề khi biên dịch  Vấn đề xảy ra.
- Mỗi thay đổi cần thời gian biên dịch lâu  Nhiều người lập trình không thể thay đổi cùng một file đồng thời  Chương trình được phân ra thành nhiều module Những vấn đề khi biên dịch  Giải pháp: chia project ra thành nhiều file  Mục tiêu.
- Chia thành các module một cách đúng đắn  Thời gian biên dịch ngắn nếu có sự thay đổi  Dễ dàng bảo trì cấu trúc project và sự phụ thuộc Makefile là gì.
- Công cụ hỗ trợ biên dịch  Chỉ biên dịch những phần cần thiết  Biên dịch trên nhiều platform khác nhau Bảo trì project  Trên Unix được thực hiện bởi Makefile  Makefile là một file dạng script chứa các thông tin.
- Cấu trúc project (file, sự phụ thuộc.
- Thí dụ.
- Chương trình chứa 3 file: main.c, sum.c, sum.h  File sum.h được dùng bởi cả 2 file main.c và sum.c  File thực thi là sum Cấu trúc project Nội dung Makefile sum: main.o sum.o gcc –o sum main.o sum.o main.o: main.c sum.h gcc –c main.c sum.o: sum.c sum.h gcc –c sum.c Cú pháp main.o: main.c sum.h Rule gcc –c main.c Cú pháp main.o: main.c sum.h Rule gcc –c main.c Target Cú pháp main.o: main.c sum.h Rule gcc –c main.c Dependency Target Cú pháp main.o: main.c sum.h Rule gcc –c main.c Dependency Target Action Cú pháp main.o: main.c sum.h Rule gcc –c main.c Tab Dependency Target Action Định nghĩa Target  Thí dụ về một dòng target với các phụ thuộc.
- sum.o: sum.c sum.h  all: sum  Và thí dụ về một target không có phụ thuộc.
- Mỗi dòng chứa action phải bắt đầu bằng TAB  Thí dụ.
- gcc –o sum sum.o main.o  rm –fr ${OBJ.
- gcc –c sum.c Phép gán  Makefile cho phép định nghĩa các biến và gán giá trị cho nó  CC = gcc  LIBS = “-lncurses –lm.
- echo ${CC} Phép gán  Thí dụ: CC = gcc LIBS = “-lpthread” TARGET = prog OBJS = main.o thread.o ${TARGET}: ${OBJS} ${CC} ${LIBS} –o ${TARGET} ${OBJS} .c.o: ${CC} –c.
- Makefile tương đương  Có thể viết Makefile với sự phụ thuộc ngắn gọn hơn dùng những macro có sẵn hỗ trợ: sum: main.o sum.o gcc –o.
- main.o sum.o main.o sum.o: sum.h gcc –c $*.c Hoạt động của Makefile  Xây dựng cây phụ thuộc của project  Target của rule đầu tiên phải được tạo  Dò theo cây phụ thuộc để tìm xem target có cần phải tạo lại không.
- Nếu target cũ hơn các file phụ thuộc thì cần phải tạo lại.
- Hoạt động của Makefile  Hoạt động của make đảm bảo sự biên dịch ít nhất nếu như cấu trúc của project được mô tả đúng.
- KHÔNG NÊN viết như sau: prog: main.c sum1.c sum2.c gcc –o prog main.c sum1.c sum2.c Vì khi đó toàn bộ project sẽ được dịch lại nếu có sự thay đổi trong project.
- Thí dụ File Last Modified sum 10:03 main.o 09:56 sum.o 09:35 main.c 10:45 sum.c 09:14 sum.h 08:39 Thí dụ Thí dụ  Các tác vụ được thực hiện: gcc –c main.c gcc –o sum main.o sum.o  main.o phải được biên dịch lại (vì main.c mới hơn.
- Do đó, main.o sẽ mới hơn sum, và sum sẽ được tạo lại