Điểm:0

làm cách nào để sửa đổi tệp thực hiện đã được biên dịch?

lá cờ cl

Giả sử tôi có một tệp thực hiện trông như thế này:

tất cả: a_functions.o b_functions.o c_functions.o d_functions.o main.o
     gcc -o all a_functions.o b_functions.o c_functions.o d_functions.o main.o
a_functions.o: a_functions.c
     gcc -c -o a_functions.o a_functions.c
b_functions.o: b_functions.c
     gcc -c -o b_functions.o b_functions.c
c_functions.o: c_functions.c
     gcc -c -o c_functions.o c_functions.c
chính.o: chính.c
     gcc -c -o main.o main.c

Tôi có thể biên dịch nó bằng lệnh

sudo make -f tệp thực hiện

và chương trình hoạt động tốt nếu tôi chạy

./tất cả các

nhưng phải làm thế nào nếu tôi muốn thêm một lệnh sạch chẳng hạn trong tệp tạo tệp? Tôi đã thêm

dọn dẹp:
     rm *.o tất cả

ở cuối tệp thực hiện nhưng thiết bị đầu cuối của tôi hiển thị

-bash: ./clean: Không có tệp hoặc thư mục như vậy

khi tôi làm ./clean

Tất nhiên biên dịch lại makefile cũng không hoạt động. Nó cho thấy

thực hiện: 'tất cả' được cập nhật.

khi tôi làm sudo make -f tệp thực hiện

tôi tìm thấy ở đây Làm cách nào để chỉnh sửa tệp thực hiện? mà bạn có thể sử dụng

$ CFLAGS="-std=c99" tạo

lệnh này trong terminal hoặc tôi có thể thêm

CFLAGS=-std=c99

trong tệp thực hiện của tôi nhưng chúng vẫn hiển thị

tất cả đều được cập nhật

hình ảnh chỉ là bằng chứng cho thấy việc sửa đổi không hiệu quả đối với tôi.

nhập mô tả hình ảnh ở đây

Điểm:4
lá cờ hr

Makefile không bao giờ được biên dịch - nó được giải thích bởi chế tạo chỉ huy. Khi bạn chạy

chế tạo

hoặc rõ ràng hơn

tạo -f tệp thực hiện

sau đó theo mặc định, chế tạo xây dựng đầu tiên Mục tiêu bên trong tạo tập tin - trong trường hợp này, đó là tất cả các Mục tiêu. Để xây dựng một mục tiêu không mặc định, bạn cần đặt tên cho nó trên dòng lệnh, tức là

Làm sạch

hoặc

làm cho -f tệp làm sạch

Lưu ý rằng dọn dẹp mục tiêu không thực sự xây dựng bất cứ thứ gì, vì vậy không giống như ./tất cả các không có chương trình như ./dọn dẹp để chạy sau đó. Trong thực tế, bạn có thể muốn khai báo dọn dẹp mục tiêu như một mục tiêu giả mạo.

game lover avatar
lá cờ cl
Cảm ơn! câu trả lời của bạn đã giúp tôi rất nhiều

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.