Antworten:
Wenn es sich um ein einfaches Programm aus einer Hand handelt:
make foo
wo die Quelldatei foo.c oder foo.cpp ist, etc.
Sie brauchen nicht einmal ein Makefile. Make verfügt über genügend integrierte Regeln, um Ihre Quelldatei in eine gleichnamige ausführbare Datei ohne Erweiterung zu integrieren.
Das Ausführen der gerade erstellten ausführbaren Datei entspricht dem Ausführen eines Programms. In den meisten Fällen müssen Sie jedoch den Pfad zur ausführbaren Datei angeben, da die Shell nur nach den darin enthaltenen Dateien sucht $PATH
, um ausführbare Dateien zu finden. In den meisten Fällen enthält dies nicht das aktuelle Verzeichnis ( .
).
So führen Sie die erstellte ausführbare Datei aus foo
:
./foo
make main.cpp
, aber make main
.
gcc main.cpp -o main.out
./main.out
Undefined symbols for architecture x86_64
Problem ändere ich den Befehl wie folgt: gcc -lstdc++ main.cpp -o main.out
und das funktioniert auf meinem Mac. via link: stackoverflow.com/questions/11852568/…
Dies ist der Befehl, der auf allen Unix-Computern funktioniert ... Ich verwende ihn unter Linux / Ubuntu, aber er funktioniert auch unter OS X. Geben Sie den folgenden Befehl in Terminal.app ein .
$ g++ -o lab21 iterative.cpp
-o
ist der Buchstabe O nicht Null
lab21
wird Ihre ausführbare Datei sein
iterative.cpp
ist Ihre C ++ - Datei
Nachdem Sie diesen Befehl ausgeführt haben, geben Sie Folgendes in das Terminal ein, um Ihr Programm auszuführen:
$ ./lab21
Zwei Schritte für mich:
zuerst:
make foo
dann:
./foo
./foo
Keine Ahnung, wie akzeptiert Antwort dieses wichtige Befehlsstück nicht hat
Die gesamte Ausführung von Anwendungen in einer Unix-Umgebung (Linux, Mac OS X, AIX usw.) hängt vom ausführbaren Suchpfad ab.
Sie können diesen Pfad im Terminal mit folgendem Befehl anzeigen:
echo $ PATH
Unter Mac OS X (standardmäßig) wird der folgende durch Doppelpunkte getrennte Suchpfad angezeigt:
/ usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / X11 / bin
So kann jede ausführbare Datei in den aufgelisteten Verzeichnissen ausgeführt werden, indem nur ihr Name eingegeben wird. Beispielsweise:
cat mytextfile.txt
Dies wird ausgeführt /bin/cat
und zeigt mytextfile.txt dem Terminal an.
Um einen anderen Befehl auszuführen, der sich nicht im Suchpfad der ausführbaren Datei befindet, müssen Sie den Pfad zur ausführbaren Datei qualifizieren. Angenommen, ich hatte eine ausführbare Datei namens MyProgram in meinem Home-Verzeichnis unter Mac OS XI.
/ Users / oliver / MyProgram
Wenn Sie sich an einem Ort in der Nähe des Programms befinden, das Sie ausführen möchten, können Sie den Namen mit einem Teilpfad versehen. Wenn sich beispielsweise MyProgram
das Verzeichnis /Users/oliver/MyProject
I und ich in meinem Ausgangsverzeichnis befanden, kann ich den Namen der ausführbaren Datei wie folgt qualifizieren und ausführen lassen:
MyProject / MyProgram
Oder sagen Sie, ich war im Verzeichnis /Users/oliver/MyProject2
und wollte ausführen. /Users/oliver/MyProject/MyProgram
Ich kann einen relativen Pfad wie diesen verwenden, um ihn auszuführen:
../MyProject/MyProgram
Ebenso, wenn ich mich im selben Verzeichnis MyProgram
befinde, in dem ich einen relativen Pfad "aktuelles Verzeichnis" verwenden muss. Das aktuelle Verzeichnis, in dem Sie sich befinden, ist das Punktzeichen, gefolgt von einem Schrägstrich. Beispielsweise:
./MeinProgramm
Verwenden Sie den pwd
Befehl, um festzustellen, in welchem Verzeichnis Sie sich gerade befinden .
Wenn Sie Programme normalerweise an einem Ort auf Ihrer Festplatte ablegen, den Sie ausführen möchten, ohne deren Namen qualifizieren zu müssen. Wenn Sie beispielsweise ein "bin" -Verzeichnis in Ihrem Home-Verzeichnis für regelmäßig verwendete Shell-Skripte anderer Programme haben, ist es möglicherweise ratsam, Ihren ausführbaren Suchpfad zu ändern.
Dies kann einfach durch Erstellen oder Bearbeiten der vorhandenen .bash_profile
Datei in Ihrem Home-Verzeichnis und Hinzufügen der Zeilen erfolgen:
#!/bin/sh
export PATH=$PATH:~/bin
Hier wird das Tilde-Zeichen (~) als Verknüpfung für / Users / oliver verwendet. Beachten Sie auch, dass die Hash-Bang-Zeile (#!) Die erste Zeile der Datei sein muss (falls sie noch nicht vorhanden ist). Beachten Sie auch, dass diese Technik erfordert, dass Ihre Anmeldeshell bash ist (die Standardeinstellung unter Mac OS X und den meisten Linux-Distributionen). Beachten Sie außerdem, dass Sie ~/bin
die Exportanweisung wie folgt neu anordnen sollten , wenn Sie möchten, dass Ihre installierten Programme gegenüber ausführbaren Systemdateien bevorzugt verwendet werden:
export PATH=~/bin:$PATH
Ryan, ich ändere dies, um eine Antwort anstelle eines Kommentars zu sein, da ich anscheinend zu kurz war. Tun Sie dies alles in "Terminal".
Um den G ++ - Compiler zu verwenden, müssen Sie Folgendes tun:
Navigieren Sie zu dem Verzeichnis, in dem Sie die * .cpp-Datei gespeichert haben.
cd ~/programs/myprograms/
(Das ~ ist eine Verknüpfung für Ihr Zuhause, dh / Users / Ryan / programme / myprograms /, ersetzen Sie es durch den Ort, den Sie tatsächlich verwendet haben.)
Kompilieren Sie es
g++ input.cpp -o output.bin
(output.bin kann wirklich alles mit jeder Erweiterung sein. bin ist unter Unix nur üblich.)
Es sollte NICHTS zurückgegeben werden, wenn es erfolgreich war, und das ist in Ordnung . Im Allgemeinen erhalten Sie Rückgaben bei Fehlern.
Wenn Sie jedoch eingeben ls
, wird die Liste der Dateien im selben Verzeichnis angezeigt. Zum Beispiel würden Sie die anderen Ordner input.cpp und output.bin sehen
Führen Sie es nun aus dem Verzeichnis heraus mit aus ./outbut.bin
Ein kompakter Weg, dies zu tun, könnte sein:
make foo && ./$_
Schön, einen Einzeiler zu haben, damit Sie Ihre ausführbare Datei einfach wieder ausführen können.
Angenommen, das aktuelle Verzeichnis befindet sich nicht im Pfad, lautet die Syntax ./[name of the program]
.
Beispielsweise ./a.out
Fügen Sie Folgendes hinzu, um die besten Warnungen zu erhalten. Sie werden es nicht bereuen. Wenn Sie können, kompilieren Sie WISE (Warnung ist Fehler)
- Wall -pedantic -Weffc++ -Werror
Zum Kompilieren von C- oder C ++ - Programmen gibt es einen allgemeinen Befehl:
make filename
./filename
make erstellt Ihre Quelldatei in eine ausführbare Datei mit demselben Namen. Wenn Sie jedoch die Standardmethode verwenden möchten, können Sie den gcc-Compiler verwenden, um C-Programme und g ++ für c ++ zu erstellen
Für C:
gcc filename.c
./a.out
Für C ++:
g++ filename.cpp
./a.out
Verwenden Sie a makefile
. Selbst für sehr kleine Projekte (= eine Datei) lohnt sich der Aufwand wahrscheinlich, da Sie mehrere Sätze von Compilereinstellungen zum Testen haben können. Das Debuggen und Bereitstellen funktioniert auf diese Weise viel einfacher.
Lesen Sie das make
Handbuch , es scheint auf den ersten Blick ziemlich lang zu sein, aber die meisten Abschnitte können Sie einfach überfliegen. Alles in allem habe ich ein paar Stunden gebraucht und mich viel produktiver gemacht.
Ich habe diesen Link mit Anweisungen gefunden:
http://www.wesg.ca/2007/11/how-to-write-and-compile-c-programs-on-mac-os-x/
Grundsätzlich tun Sie:
gcc hello.c
./a.out (or with the output file of the first command)
gcc hello.c -o a.out
? Welches macht das gleiche wie gcc hello.c
.
Geben Sie einfach das Verzeichnis ein, in dem sich Ihre c / cpp-Datei befindet.
zum Kompilieren und Ausführen von c-Code.
$gcc filename.c
$./a.out filename.c
zum Kompilieren und Ausführen von C ++ - Code.
$g++ filename.cpp
$./a.out filename.cpp
"$" ist das Standard-Mac-Terminal-Symbol
Um einen CPP-Quellcode vom Mac-Terminal zu kompilieren und auszuführen, muss Folgendes ausgeführt werden:
Das Ausführen einer .C-Datei über das Terminal erfolgt in zwei Schritten. Der erste Schritt besteht darin, gcc in das Terminal einzugeben, die C-Datei auf dem Terminal abzulegen und dann zu drücken Enter:
username$ gcc /Desktop/test.c
Führen Sie im zweiten Schritt den folgenden Befehl aus:
username$ ~/a.out
Angenommen, der Dateiname lautet "main.cpp", um C ++ - Dateien auszuführen, die unter dem Befehl ausgeführt werden.
1.Kompilieren Sie, um eine Objektdatei aus einer C ++ - Datei zu erstellen.
g++ -c main.cpp -o main.o
2. Da #include <conio.h>
MacOS nicht unterstützt wird, sollten wir die Alternative verwenden, die Mac unterstützt #include <curses.h>
. Jetzt muss die Objektdatei in eine ausführbare Datei konvertiert werden. Um zu benutzen, müssen curses.h
wir die Bibliothek benutzen -lcurses
.
g++ -o main main.o -lcurses
3. Führen Sie jetzt die ausführbare Datei aus.
./main