Як запустити програму C на Mac OS X за допомогою Terminal?


81

Я новачок у C. Ось моє "Привіт, світе!" програма.

#include <stdio.h>

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

Після того, як я спробую запустити його за допомогою терміналу, він говорить:

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

Чому?



Що таке файл "Без назви1"? Файл, що містить джерело, яке ви включили у запитання, чи щось інше?
pasaba por aqui

Замініть pintfна printf, залишайте int і main на одному рядку.
Вальтер

Відповіді:


165

Спочатку збережіть програму як program.c.

Тепер вам потрібен компілятор, тому вам потрібно зайти в App Store і встановити Xcode, який є компілятором і засобами розробки Apple. Як знайти App Store ? Зробіть a "Spotlight Search" , набравши текст, Spaceі почніть друкувати App Storeта натискайте, Enterколи він вгадає правильно.

Магазин додатків виглядає так:

введіть тут опис зображення

Xcode виглядає так на App Store :

введіть тут опис зображення

Потім вам потрібно встановити інструменти командного рядка в Terminal . Як запустити термінал ? Вам потрібно зробити ще один "Spotlight Search" , що означає, що ви вводите текст Spaceі починаєте друкувати Terminalта натискаєте, Enterколи він здогадається Terminal.

Тепер встановіть такі інструменти командного рядка:

xcode-select --install

Тоді ви можете скомпілювати свій код за допомогою простого запуску, gccяк у наступному рядку, без необхідності запускати великий, потворний графічний інтерфейс для розробки програмного забезпечення, який називається Xcode:

gcc -Wall -o program program.c

Примітка : У новіших версіях OS X ви б використовували clangзамість gccцього:

clang program.c -o program

Тоді ви можете запустити його за допомогою:

./program
Hello, world!

Якщо ваша програма є C ++, ви, мабуть, захочете скористатися однією з цих команд:

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

6
Зробіть це, gcc -Wall -o program program.cі ви отримаєте корисні попередження компілятора (хоча і не всі), які повідомлять вам про деякі причини, через які ваш код не працює.
Schwern

Приємна відповідь, але зауважте, що немає необхідності явно викликати clang - gcc у будь-якому випадку є символічним посиланням на clang.
Paul R

51

Спочатку переконайтеся, що ви виправили свою програму:

#include <stdio.h>

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

Збережіть файл як HelloWorld.cі введіть у терміналі:

gcc -o HelloWorld HelloWorld.c

Потім просто запустіть виконуваний файл так:

./HelloWorld

Ви повинні бачити Hello World!


7
Краще "зберегти файл як Untitled.c ". Ще краще: використовуйте більш значущу назву файлу.
Jongware

11

Працює в 2019 році За замовчуванням ви можете скомпілювати своє ім’я.c за допомогою терміналу

 cc name.c

а якщо вам потрібно запустити, просто напишіть

 ./name.out

2
його відображається як "a.out" замість f "{name} .out" незалежно від того, яке ім'я. це завжди "а" з якихось причин.
Flaming_Dorito

1
@Flaming_Dorito, це поведінка за замовчуванням для створення виконуваного об'єктного файлу. Тим не менш, ви можете дати йому назву на свій смак. Введіть -> cc -o name name.c
Яш Тамакувала

@YashTamakuwala о, я бачу. Дякую
Flaming_Dorito

9

"C-програму" не можна запускати. Він призначений для компіляції у "виконувану" програму, яку потім можна запустити з вашого терміналу. Вам потрібен компілятор .

О, і відповідь на ваше останнє запитання ("Чому?") Полягає в тому, що файл, який ви намагаєтесь виконати, не має встановлених прав для виконання (що компілятор зазвичай робить автоматично з двійковим файлом, що дозволить зробити висновок, що ви намагалися запустити вихідний код як скрипт, звідси підказка щодо компіляції.)


1
найкраща відповідь! A "C-program" is not supposed to be run.
Едді

4

Зробити це:

  1. відкритий термінал

  2. введіть в термінал nano:; який є текстовим редактором, доступним для терміналу. коли ви це робите. щось подібне з’явиться.

  3. тут ви можете ввести свою Cпрограму

  4. введіть control(^) + x-> що означає вийти.

  5. збережіть файл, набравши, yщоб зберегти файл

  6. написати ім'я файлу; наприклад helloStack.c(не забудьте додати .c )

  7. коли це з'явиться, введіть gcc helloStack.c

  8. тоді ./a.out: це має дати вам ваш результат !!

3

щоб скомпілювати c-програму в macos, просто виконайте наступні кроки

за допомогою команди cd у терміналі перейдіть до розташування вашої програми,
потім введіть команду, присутню нижче,
зробіть ім'я файлу,
а потім введіть
./filename


2

Для компіляції програми змінного струму на вашому останньому macOS просто введіть наступне в терміналі після збереження файлу з розширенням .c та після досягнення шляху, де файл зберігається:

cc yourfilename.c

Перевіривши всі помилки після компіляції (якщо такі є), введіть наступне для виконання коду:

./a.out

Ці команди перевірені на macOS Mojave і працюють чудово, вітаючи кодування!


0

Відповідь chmod 755 привіт - це робить файл виконуваним ... Це смішно, тому на нього ніхто не відповів. У мене була така ж проблема на MacOS, яка зараз вирішена.

nano hello.c make hello chmod 755 hello Тоді ви запускаєте його ./ hello

clang --version Apple LLVM версія 8.0.0 (clang-800.0.42.1) Ціль: x86_64-apple-darwin15.6.0

нічого не було встановлено, nano make (clang) chmod - все всередині MacOS вже


-1

1) Спочатку потрібно встановити компілятор GCC для mac (пошукати в Google і встановити з мережі)

2) Запам’ятайте шлях, де ви зберігаєте файл C.

3) Перейдіть до терміналу та встановіть шлях

наприклад - якщо ви зберегли в новій папці ProgramC у папці Document

   then type this in Terminal
    cd Document
    cd ProgramC

4) Тепер ви можете бачити, що ви знаходитесь у папці, де ви зберегли програму С (нехай ви зберегли програму як Hello.c)

5) Тепер складіть свою програму

   make Hello
   ./hello
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.