Wie kann ich C- oder C++-Code in einer Unix-Konsole oder einem Mac-Terminal kompilieren/ausführen?
Antworten
Zu viele Anzeigen?Wenn es sich um ein einfaches Single-Source-Programm handelt,
make foo
wo die Quelldatei lautet foo.c , foo.cpp usw., brauchen Sie nicht einmal ein Makefile. Make hat genug eingebaute Regeln, um Ihre Quelldatei in eine ausführbare Datei mit demselben Namen zu verwandeln, ohne die Erweiterung.
Das Ausführen der soeben erstellten ausführbaren Datei ist dasselbe wie das Ausführen eines beliebigen Programms - allerdings müssen Sie in den meisten Fällen den Pfad zur ausführbaren Datei angeben, da die Shell nur das sucht, was sich in $PATH
um ausführbare Dateien zu finden, und das schließt in den meisten Fällen nicht das aktuelle Verzeichnis ( .
).
Um die erstellte ausführbare Datei auszuführen foo
:
./foo
Dieser Befehl funktioniert auf allen Unix-Rechnern... Ich verwende ihn unter Linux/Ubuntu, aber er funktioniert auch unter OS X. Geben Sie den folgenden Befehl ein Terminal.app .
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 zu starten:
./lab21
Die gesamte Anwendungsausführung in einer Unix-Umgebung (Linux, Mac OS X, AIX usw.) hängt vom Suchpfad für die ausführbare Datei ab.
Sie können diesen Pfad im Terminal mit diesem 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 einfach durch Eingabe ihres Namens ausgeführt werden. Zum Beispiel:
cat meinetextdatei.txt
Dies läuft /bin/cat
und zeigt mytextfile.txt auf dem Terminal an.
Um einen anderen Befehl auszuführen, der nicht im Suchpfad der ausführbaren Datei enthalten ist, müssen Sie den Pfad zur ausführbaren Datei angeben. Angenommen, ich hätte eine ausführbare Datei mit dem Namen MyProgram in meinem Home-Verzeichnis unter Mac OS X, dann könnte ich sie wie folgt vollständig qualifizieren:
/Benutzer/oliver/MeinProgramm
Wenn Sie sich an einem Ort befinden, der in der Nähe des auszuführenden Programms liegt, können Sie den Namen mit einem Teilpfad versehen. Zum Beispiel, wenn MyProgram
befand sich in dem Verzeichnis /Users/oliver/MyProject
Wenn ich mich in meinem Home-Verzeichnis befinde, kann ich den Namen der ausführbaren Datei wie folgt qualifizieren und sie ausführen lassen:
MeinProjekt/MeinProgramm
Oder sagen wir, ich war im Verzeichnis /Users/oliver/MyProject2
und ich wollte ausführen /Users/oliver/MyProject/MyProgram
Ich kann einen relativen Pfad wie diesen verwenden, um ihn auszuführen:
../MeinProjekt/MeinProgramm
Ähnlich verhält es sich, wenn ich mich in demselben Verzeichnis befinde wie MyProgram
Ich muss einen relativen Pfad zum "aktuellen Verzeichnis" verwenden. Das aktuelle Verzeichnis, in dem Sie sich befinden, ist ein Punkt, gefolgt von einem Schrägstrich. Zum Beispiel:
/MeinProgramm
Um festzustellen, in welchem Verzeichnis Sie sich gerade befinden, verwenden Sie die pwd
Befehl.
Wenn Sie häufig Programme an einem Ort auf Ihrer Festplatte ablegen, die Sie ausführen möchten, ohne deren Namen zu kennen. Wenn Sie zum Beispiel ein "bin"-Verzeichnis in Ihrem Home-Verzeichnis haben, in dem Sie regelmäßig Shell-Skripte oder andere Programme verwenden, kann es ratsam sein, den Suchpfad für ausführbare Dateien zu ändern.
Dies kann einfach durch Erstellen oder Bearbeiten der bestehenden .bash_profile
in Ihrem Home-Verzeichnis und fügen Sie die folgenden Zeilen hinzu:
#!/bin/sh
export PATH=$PATH:~/bin
Hier wird das Tilde-Zeichen (~) als Abkürzung für /Users/oliver verwendet. Beachten Sie auch, dass die Zeile mit dem Rautenzeichen (#!) die erste Zeile der Datei sein muss (falls sie nicht bereits existiert). 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 auch, dass Sie, wenn Sie Ihre Programme in ~/bin
anstelle von ausführbaren Systemdateien verwendet werden soll, sollten Sie die Exportanweisung wie folgt umstellen:
export PATH=~/bin:$PATH
- See previous answers
- Weitere Antworten anzeigen