2014-10-16 13 views
6

Gần đây tôi đã mua Macbook Pro và tôi muốn thực hiện một số mã trong C với thiết bị đầu cuối.Cách biên dịch chương trình C trên Mac OS X Terminal

tôi có thể biên dịch mã với lệnh này:

gcc filename.c –o filename 

Nhưng tôi muốn để biên dịch nó với lệnh make bởi vì tôi biết nó là thực hành tốt nhất và tôi muốn làm theo cách tốt nhất.

make filename cc filename.c -o filename 

Lệnh này được đưa ra cho tôi những kết quả sau:

make: Nothing to be done for `ex01'. 
make: *** No rule to make target `cc'. Stop. 

Lưu ý rằng tôi đã cài đặt Xcode và phát triển Xcode công cụ dòng lệnh và trong thư mục /usr/bin tôi thấy tạo các thuộc tínhmakefile.

Có ai có bất kỳ gợi ý nào về việc tôi nên làm gì để có thể biên dịch với đối số makefile và cc không?

Trả lời

11

Tạo một tập tin gọi Makefile trên con đường tương tự với nội dung này:

CC = cc 
CFLAGS = -std=c99 -pedantic -Wall 
OBJECTS = filename.o 

all: appname 

filename.o: filename.c 
    $(CC) $(CFLAGS) -c filename.c 

appname: $(OBJECTS) 
    $(CC) $(OBJECTS) -o appname 

clean: 
    rm -f *.o appname 

Sau đó chạy:

make 

Tất nhiên, thay appname với tên của chương trình của bạn

Note : Phải có "tab" (không phải khoảng trắng) trước

$(CC) $(CFLAGS) -c filename.c 

$(CC) $(OBJECTS) -o appname 
+0

Cảm ơn Alter Mann đã giải quyết được sự cố của tôi Tôi sẵn sàng tận hưởng mã hóa trong thiết bị đầu cuối ngay bây giờ.Chỉ cần một câu hỏi khác ngay cả khi nó giải quyết được. Bạn có biết tại sao điều này không hoạt động hay không .make filename cc filename.c -o filename nó chỉ không được hỗ trợ trên MacO hoặc là một số vấn đề cấu hình hoặc nó chỉ không phải là cách để làm điều đó? –

+1

@bigpop Cú pháp dòng lệnh đó không được hỗ trợ bởi bất kỳ 'make', ở bất cứ đâu, trên mọi hệ thống. Không biết bạn lấy nó từ đâu nhưng ở bất cứ nơi nào bạn làm, bạn nên tránh sử dụng nó làm tài liệu tham khảo trong tương lai. Ngoài ra, tôi không hiểu câu lệnh trong câu trả lời _ [phải có một] dòng trống trước đó_ việc gán biến: không có yêu cầu cho điều đó mà tôi biết. – MadScientist

+0

@MadScientist, oops, bạn nói đúng, không cần phải đặt một dòng trống, chỉnh sửa cảm ơn –

5

Tôi đã sau cùng tutorial, và chạy vào một vấn đề tương tự.

Tôi không biết chính xác bạn đã làm gì, nhưng tôi nghĩ rằng sai lầm đã chạy sai lệnh. Bạn đã nhập make filename cc filename.c -o filename, nhưng hướng dẫn đã hướng dẫn chúng tôi sử dụng make filename, không có phần cc filename.c -o filename. Có lẽ bạn đã đọc một phiên bản cũ?

Và, make filename hoạt động tốt, You don't need a Makefile.


FYI, Đây là cách tôi chạy vào vấn đề và làm thế nào tôi giải quyết nó:

  1. gõ mã dưới đây, và lưu nó trong một file có tên "EX1"

    int main(int argc, char *argv[]) 
    { 
        puts("Hello world."); 
    
        return 0; 
    } 
    
  2. đã nhập make ex1 trong terminal
  3. nhận được thông báo lỗi make: Nothing to be done for 'ex1'.

Như bạn có thể thấy, lỗi của tôi là tên tệp của mã nguồn phải là ex1.c, KHÔNG ex1.

Và khi tôi đổi tên tệp thành ex1.c và được thực hiện make ex1, nó hoạt động.

Các vấn đề liên quan