Làm thế nào để chạy chương trình C trên Mac OS X bằng Terminal?


81

Tôi là người mới đến C. Đây là "Xin chào, thế giới!" chương trình.

#include <stdio.h>

int main(void)    
{
  printf("Hello, world!\n");
  return 0;
}

Sau khi tôi cố gắng chạy nó bằng Terminal, nó nói:

MacBook-Pro-MacBook:~ macbook$ /Users/macbook/Desktop/peng/Untitled1
-bash: /Users/macbook/Desktop/peng/Untitled1: Permission denied
MacBook-Pro-MacBook:~ macbook$ 

Tại sao?



Tệp "Untitled1" là gì? Tệp chứa nguồn mà bạn đã đưa vào câu hỏi hay bất cứ thứ gì khác?
pasaba bởi aqui

Thay thế pintfbằng printf, giữ nguyên int và main trên cùng một dòng.
Walter A

Câu trả lời:


162

Đầu tiên hãy lưu chương trình của bạn dưới dạng program.c.

Bây giờ bạn cần trình biên dịch, vì vậy bạn cần vào App Store và cài đặt Xcode , đây là công cụ biên dịch và phát triển của Apple. Làm thế nào để tìm App Store ? Thực hiện "Tìm kiếm tiêu điểm" bằng cách nhập Spacevà bắt đầu nhập App Storevà nhấn Enterkhi nó đoán đúng.

App Store trông như thế này:

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

Xcode trông như thế này trên App Store :

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

Sau đó, bạn cần cài đặt các công cụ dòng lệnh trong Terminal . Làm thế nào để bắt đầu Terminal ? Bạn cần thực hiện một "Tìm kiếm tiêu điểm" khác , nghĩa là bạn nhập Spacevà bắt đầu nhập Terminalvà nhấn Enterkhi nó đoán Terminal.

Bây giờ cài đặt các công cụ dòng lệnh như sau:

xcode-select --install

Sau đó, bạn có thể biên dịch mã của mình bằng cách đơn giản chạy gccnhư trong dòng tiếp theo mà không cần phải kích hoạt GUI phát triển phần mềm lớn, xấu xí được gọi là Xcode:

gcc -Wall -o program program.c

Lưu ý : Trên các phiên bản OS X mới hơn, bạn sẽ sử dụng clangthay vì gccnhư thế này:

clang program.c -o program

Sau đó, bạn có thể chạy nó với:

./program
Hello, world!

Nếu chương trình của bạn là C ++, có thể bạn sẽ muốn sử dụng một trong các lệnh sau:

clang++ -o program program.cpp
g++ -std=c++11 -o program program.cpp
g++-7 -std=c++11 -o program program.cpp

6
Thực hiện gcc -Wall -o program program.cvà bạn sẽ nhận được các cảnh báo trình biên dịch hữu ích (mặc dù không phải tất cả chúng) sẽ cho bạn biết một số lý do khiến mã của bạn không hoạt động.
Schwern

Câu trả lời hay, nhưng lưu ý rằng không cần phải gọi rõ ràng clang - gcc dù sao cũng được liên kết tượng trưng với clang.
Paul R

51

Trước tiên, hãy đảm bảo rằng bạn sửa chương trình của mình:

#include <stdio.h>

int main(void) {
   printf("Hello, world!\n"); //printf instead of pintf
   return 0;
}

Lưu tệp dưới dạng HelloWorld.cvà nhập vào thiết bị đầu cuối:

gcc -o HelloWorld HelloWorld.c

Sau đó, chỉ cần chạy tệp thực thi như thế này:

./HelloWorld

Bạn sẽ thấy Hello World!


6
Tốt hơn là "lưu tệp dưới dạng Untitled.c ". Tốt hơn nữa: hãy sử dụng một tên tệp có ý nghĩa hơn.
Jongware

9

Một "chương trình C" không được phép chạy. Nó có nghĩa là được biên dịch thành một chương trình "thực thi được" mà sau đó có thể chạy từ thiết bị đầu cuối của bạn. Bạn cần một trình biên dịch cho điều đó.

Ồ, và câu trả lời cho câu hỏi cuối cùng của bạn ("Tại sao?") Là tệp bạn đang cố gắng thực thi không có quyền thực thi được đặt (mà trình biên dịch thường thực hiện tự động với tệp nhị phân, điều này có thể suy ra rằng bạn đang thử để chạy mã nguồn dưới dạng tập lệnh, do đó, gợi ý khi biên dịch.)


1
câu trả lời tốt nhất! A "C-program" is not supposed to be run.
Eddie

9

Làm việc vào năm 2019 Theo mặc định, bạn có thể biên dịch name.c của mình bằng terminal

 cc name.c

và nếu bạn cần chạy, chỉ cần viết

 ./name.out

2
nó hiển thị là "a.out" thay vì f "{name} .out" bất kể tên đó là gì. nó luôn luôn là "a" vì một số lý do.
Flaming_Dorito

1
@Flaming_Dorito, đó là hành vi mặc định để tạo tệp đối tượng thực thi. Tuy nhiên, bạn có thể chọn đặt cho nó một cái tên theo ý thích của bạn. Type -> Tên cc -o name.c
Yash Tamakuwala

@YashTamakuwala ồ tôi hiểu rồi. Cảm ơn
Flaming_Dorito

4

Để làm điều này:

  1. mở thiết bị đầu cuối

  2. gõ vào thiết bị đầu cuối : nano; là một trình soạn thảo văn bản có sẵn cho thiết bị đầu cuối. khi bạn làm điều này. một cái gì đó như thế này sẽ xuất hiện.

  3. ở đây bạn có thể nhập Cchương trình của mình

  4. gõ vào control(^) + x-> có nghĩa là thoát ra.

  5. lưu tệp bằng cách nhập yđể lưu tệp

  6. viết tên tệp; ví dụ: helloStack.c(đừng quên thêm .c )

  7. khi điều này xuất hiện, hãy nhập gcc helloStack.c

  8. thì ./a.out: điều này sẽ cho bạn kết quả của bạn !!

3

để biên dịch chương trình c trong macos, chỉ cần làm theo các bước dưới đây

bằng cách sử dụng lệnh cd trong terminal, hãy chuyển đến vị trí chương trình c của bạn,
sau đó nhập lệnh hiện diện bên dưới
tạo tên tệp
rồi nhập
./filename


2

Để biên dịch chương trình ac trên macOS mới nhất của bạn, chỉ cần nhập dòng sau vào terminal sau khi lưu tệp với phần mở rộng .c và khi đến đường dẫn nơi tệp được lưu:

cc yourfilename.c

Khi bạn đã kiểm tra tất cả các lỗi sau khi biên dịch (nếu có), hãy nhập thông tin sau để thực thi mã:

./a.out

Các lệnh này được thử nghiệm trên macOS Mohave và đang hoạt động hoàn toàn tốt, chúc mừng việc viết mã!


0

Câu trả lời là chmod 755 xin chào - nó làm cho tệp thực thi được ... Thật là buồn cười, vì vậy không ai trả lời nó. Tôi gặp sự cố tương tự trên MacOS, hiện đã được giải quyết.

nano hello.c make hello chmod 755 hello Sau đó bạn chạy nó bằng ./hello

clang - phiên bản Apple LLVM 8.0.0 (clang-800.0.42.1) Mục tiêu: x86_64-apple-darwin15.6.0

không có gì được cài đặt, nano make (clang) chmod - tất cả đều có trong MacOS


-1

1) Đầu tiên, bạn cần cài đặt Trình biên dịch GCC cho mac (Google và cài đặt nó từ mạng)

2) Ghi nhớ đường dẫn nơi bạn đang lưu trữ tệp C.

3) Vào Terminal và đặt đường dẫn

ví dụ- nếu bạn đã lưu trong một thư mục mới ProgramC trong thư mục Tài liệu

   then type this in Terminal
    cd Document
    cd ProgramC

4) Bây giờ bạn có thể thấy rằng bạn đang ở trong thư mục nơi bạn đã lưu chương trình C của mình (cho phép bạn lưu chương trình của mình với tên Hello.c)

5) Bây giờ Biên dịch chương trình của bạn

   make Hello
   ./hello
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.