Jak uruchomić program w C na Mac OS X za pomocą terminala?


81

Jestem nowy w C. Oto moje „Witaj, świecie!” program.

#include <stdio.h>

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

Po próbie uruchomienia go za pomocą terminala mówi:

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

Czemu?



Co to jest plik „Untitled1”? Czy plik zawiera źródło, które zawarłeś w pytaniu, czy cokolwiek innego?
pasaba por aqui

Zastąp pintfprzez printf, zachowaj int i main w tej samej linii.
Walter A

Odpowiedzi:


165

Najpierw zapisz swój program jako program.c.

Teraz potrzebujesz kompilatora, więc musisz przejść do App Store i zainstalować Xcode, który jest kompilatorem i narzędziami programistycznymi firmy Apple. Jak znaleźć App Store ? Wykonaj „Wyszukiwanie Spotlight” , wpisując Spacei zacznij pisać, App Storea następnie naciśnij, Entergdy zgadnie poprawnie.

App Store wygląda następująco:

wprowadź opis obrazu tutaj

Xcode wygląda tak w App Store :

wprowadź opis obrazu tutaj

Następnie musisz zainstalować narzędzia wiersza poleceń w Terminalu . Jak uruchomić Terminal ? Musisz wykonać kolejne „Wyszukiwanie Spotlight” , co oznacza, że ​​piszesz Spacei zaczynasz pisać, Terminala Entergdy zgadnie, naciskasz Terminal.

Teraz zainstaluj narzędzia wiersza poleceń w ten sposób:

xcode-select --install

Następnie możesz skompilować swój kod, uruchamiając po prostu gccjak w następnym wierszu, bez konieczności uruchamiania dużego, brzydkiego GUI do tworzenia oprogramowania o nazwie Xcode:

gcc -Wall -o program program.c

Uwaga : w nowszych wersjach systemu OS X należy użyć clangzamiast gcctego:

clang program.c -o program

Następnie możesz go uruchomić za pomocą:

./program
Hello, world!

Jeśli twój program jest w C ++, prawdopodobnie będziesz chciał użyć jednego z tych poleceń:

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

6
Zrób to, gcc -Wall -o program program.ca otrzymasz pomocne ostrzeżenia kompilatora (choć nie wszystkie), które powiedzą ci o niektórych powodach, dla których twój kod nie działa.
Schwern,

Dobra odpowiedź, ale zauważ, że nie ma potrzeby jawnego wywoływania clang - gcc i tak jest dowiązane symbolicznie do clang.
Paul R

51

Najpierw upewnij się, że poprawiłeś swój program:

#include <stdio.h>

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

Zapisz plik jako HelloWorld.ci wpisz w terminalu:

gcc -o HelloWorld HelloWorld.c

Następnie po prostu uruchom plik wykonywalny w następujący sposób:

./HelloWorld

Powinieneś zobaczyć Hello World!


7
Lepiej jest „zapisać plik jako Untitled.c ”. Jeszcze lepiej: użyj bardziej znaczącej nazwy pliku.
Jongware

11

Praca w 2019 Domyślnie możesz skompilować swoje name.c za pomocą terminala

 cc name.c

a jeśli potrzebujesz biegać, po prostu napisz

 ./name.out

2
pojawia się jako „a.out” zamiast f „{nazwa} .out” bez względu na nazwę. z jakiegoś powodu zawsze jest "a".
Flaming_Dorito

1
@Flaming_Dorito, jest to domyślne zachowanie podczas tworzenia wykonywalnego pliku obiektu. Możesz jednak nadać mu dowolną nazwę. Wpisz -> cc -o nazwa nazwa. C
Yash Tamakuwala

@YashTamakuwala ohh, widzę. Dzięki
Flaming_Dorito

9

„Program w C” nie powinien być uruchamiany. Ma być skompilowany jako program "wykonywalny", który następnie można uruchomić z terminala. Potrzebujesz do tego kompilatora .

Aha, i odpowiedź na twoje ostatnie pytanie („Dlaczego?”) Jest taka, że ​​plik, który próbujesz wykonać, nie ma ustawionych praw do wykonywania (co kompilator zwykle robi automatycznie w przypadku pliku binarnego, co pozwala wywnioskować, że próbujesz uruchomić kod źródłowy jako skrypt, stąd wskazówka przy kompilacji).


1
najlepsza odpowiedź! A "C-program" is not supposed to be run.
Eddie

4

Aby to zrobić:

  1. otwórz terminal

  2. wpisz w terminalu nano:; który jest edytorem tekstu dostępnym dla terminala. kiedy to robisz. coś takiego by się pojawiło.

  3. tutaj możesz wpisać swój Cprogram

  4. wpisz control(^) + x-> co oznacza wyjście.

  5. zapisz plik, wpisując, yaby zapisać plik

  6. wpisz nazwę pliku; np. helloStack.c(nie zapomnij dodać .c )

  7. kiedy się pojawi, wpisz gcc helloStack.c

  8. wtedy ./a.out: to powinno dać ci wynik !!

3

aby skompilować program c w macOS, wykonaj poniższe czynności

używając polecenia cd w terminalu przejdź do lokalizacji programu c,
a następnie wpisz polecenie obecne poniżej
utwórz nazwę pliku,
a następnie wpisz ./nazwa pliku


2

Aby skompilować program ac na najnowszym systemie macOS, po zapisaniu pliku z rozszerzeniem .c i dotarciu do ścieżki, w której plik jest zapisany, wpisz w terminalu następujące polecenie:

cc nazwa pliku.c

Po sprawdzeniu wszystkich błędów po kompilacji (jeśli występują), wpisz następujące polecenie, aby wykonać kod:

./a.out

Te polecenia są testowane w systemie macOS Mojave i działają doskonale, okrzyki kodowania!


0

Odpowiedź brzmi: chmod 755 hello - sprawia, że ​​plik jest wykonywalny ... To zabawne, więc nikt na nie nie odpowiedział. Miałem ten sam problem na MacOS, który został już rozwiązany.

nano hello.c make hello chmod 755 hello Następnie uruchamiasz to przez ./hello

clang --version Apple LLVM wersja 8.0.0 (clang-800.0.42.1) Cel: x86_64-apple-darwin15.6.0

nic nie zostało zainstalowane, nano make (clang) chmod - wszystko już w MacOS


-1

1) Najpierw musisz zainstalować kompilator GCC na Maca (wygoogluj go i zainstaluj z sieci)

2) Zapamiętaj ścieżkę, w której przechowujesz plik C.

3) Idź do Terminala i wyznacz ścieżkę

np. jeśli zapisałeś w nowym folderze ProgramC w folderze Dokument

   then type this in Terminal
    cd Document
    cd ProgramC

4) Teraz możesz zobaczyć, że jesteś w folderze, w którym zapisałeś swój program w C (możesz zapisać swój program jako Hello.c)

5) Teraz skompiluj swój program

   make Hello
   ./hello
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.