Was ist ein Befehl zum Kompilieren und Ausführen von C ++ - Programmen?


Antworten:


108

Verwenden Sie zum Kompilieren Ihres C ++ - Codes Folgendes:

g++ foo.cpp

foo.cpp im Beispiel ist der Name des zu kompilierenden Programms.

Dies wird eine ausführbare Datei in demselben Verzeichnis erzeugen, a.outdas Sie ausführen können, indem Sie Folgendes in Ihr Terminal eingeben:

./a.out

g ++ sollte sich bereits in Ihrem $ PATH befinden, sodass Sie nicht /usr/bin/g++explizit aufrufen müssen , aber Sie können letzteres auf jeden Fall verwenden.

foo.cppsollte sich in demselben Verzeichnis befinden, von dem aus Sie den Befehl ausführen. Im Zweifelsfall können Sie sicherstellen, dass Sie sich im selben Verzeichnis befinden, indem Sie ls foo.cppoder eingeben head foo.cpp(wenn Sie überprüfen müssen, ob Sie mit dem richtigen Verzeichnis arbeiten foo).

Wie von @ con-f-use angegeben, macht der Compiler diese Datei normalerweise ausführbar. Wenn dies nicht der Fall ist, können Sie dies selbst tun (der auszuführende Befehl ./a.outoder ein gleichwertiger Befehl funktioniert also):

chmod +x ./a.out

a.outVerwenden -oSie den Befehl g ++, um den Namen der kompilierten Ausgabedatei anzugeben, damit sie nicht benannt wird .

Z.B

g++ -o output foo.cpp

Dadurch wird foo.cppdie Binärdatei mit dem Namen kompiliert output, und Sie können ./outputeingeben, um den kompilierten Code auszuführen.


6
Der Compiler macht normalerweise die Binärdatei ( a.outin diesem Fall) ausführbar. Wenn nicht , können Sie dies tun, indem Sie eingeben: chmod +x a.out. Wenn Ihr kompiliertes Programm ausführbar ist, können Sie es eingeben ./a.out- der Punkt und der Schrägstrich zeigen an, dass Sie es ausführen möchten.
con-f-use

@ Rajeshkumar, hast du eine dieser Antworten gefunden, die dir gefällt? Wenn ja, können Sie bitte eine davon als akzeptierte Antwort markieren (indem Sie das Häkchen unter den Auf- / Ab-Abstimmungspfeilen markieren), damit wir eine Linie unter dieses Problem ziehen können.

Gibt es einen Unterschied zwischen der Ausgabe von g ++ foo.c -o und der Ausgabe von g ++ -o foo.c?
Goldname

21

Ich mache hier zwei Annahmen:

  1. Sie haben bereits eine C ++ - Quelldatei / ein C ++ - Programm zum Erstellen bereit
  2. Sie haben ein Build-System auf Ihrem Computer eingerichtet

Der einfachste Weg, ein C ++ - Programm unter Ubuntu oder einer anderen Linux-Distribution zu kompilieren, ist die Eingabe

g++ main.cpp -o main
  • g ++ ist der Aufruf der C ++ - Komponente von GCC , des Defacto-Compilers für C / C ++ und vieler anderer Sprachen auf der Linux-Plattform. Es ist derzeit der einzige Compiler, der den Linux-Kernel kompilieren kann.
  • main.cpp ist die C ++ - Quelldatei, die Sie kompilieren möchten.
  • -o main gibt den Namen der Ausgabedatei an, die Sie nach dem Kompilieren der Quelle erstellen möchten. Die Zielquelldatei und die Zielausgabedatei können auf Wunsch invertiert werden, dies g++ -o main main.cppist also gleichermaßen gültig.
  • Um dieses Programm dann auszuführen, müssen Sie ./main im Terminal ausführen.

Bei den obigen Befehlen wird davon ausgegangen, dass Sie sich bereits am Speicherort der Quelldateien befinden. Die Quelldatei und die Zielausgabedatei können jedoch auch als Verzeichnis angegeben werden. Zum Beispiel

g++ ~/Desktop/main.cpp -o ~/Projects/main

kompiliert eine C ++ - Quelldatei auf Ihrem Desktop und legt die ausführbare Binärdatei in einem ProjectsOrdner in Ihrem Ausgangsverzeichnis ab . Führen Sie aus, um diese ausführbare Datei auszuführen ./Projects/main.


5

So kompiliere ich gerne mit g ++.

$g++ -W -Wall -pedantic -o programName -p sourceFile.cpp

-W: Print extra warning messages for some problems.
-Wall: Enable all the warnings about questionable code
-pedantic: Show all the warnings demanded by strict ISO compliance
-o programName: place the executable output in programName sourceFile.cpp: the 
name of our source code file
-p: Generate extra code to write profile information suitable for the analysis program prof

1
-p: Generate extra code to write profile information suitable for the analysis program prof.
Hans

Ich mag deine Antwort. Es bringt zusätzliche Vorschläge. Aber Sie sollten es wirklich umformulieren, um allgemein akzeptabel zu sein.
LinuxSecurityFreak

1

Sie benötigen g ++, da gcc die CPP-Datei möglicherweise nicht einfach kompiliert.
Sie müssen auch vim oder emacs lernen, um C-Code zu schreiben.
Probieren Sie dies einfach auf Ihrem Terminal aus:

Geben Sie ein Testprogramm ein und speichern Sie es:

$vim hello.cc

Kompiliere hello.ccmit g ++:

$g++ hello.cc -o hello

Führ es aus:

$./hello

Hier ./bedeutet das, dass sich die exe-Datei unter dem aktuellen Verzeichnis befindet.


3
gcc ist der GNU-Compiler für C- und C ++ - Compiler. Und das OP muss nicht unbedingt vim oder emacs kennen, um C-Code zu schreiben. Es gibt viele andere Texteditoren und IDEs, die herumschwirren.
Nitin Venkatesh

3
Obwohl ich vim liebe, ist es nicht sehr hilfreich, wenn jemand bereits Probleme damit hat, herauszufinden, wie man ein Problem ausführt.
Johanvdw

Ich persönlich mag es nicht vi, aber es spielt keine Rolle. Sie sollten sich davon abwenden, einen bestimmten Editor vorzuschlagen, jeder verwendet sowieso seinen eigenen.
LinuxSecurityFreak

0

g++ist ein Front-End von gcc(GNU Compiler Collection) mit einigen vordefinierten c ++ - Makros und verschiedenen Standardoptionen / Flags.

Das Kompilieren von C ++ - Code mit gccist praktisch, wenn g++es aus einer Reihe von Gründen nicht verfügbar ist. Es geht lediglich darum, eine Verknüpfung mit der C ++ - Bibliothek -lstdc++herzustellen und gcc zu informieren, die Eingabe als C ++ - Code zu behandeln (entweder durch Verwendung einer .CErweiterung oder durch Erzwingen der Sprache mit -x)
anderer gültige c ++ Dateinamen - Suffixe: .cc, .cp, .cxx, .cpp, .CPP,.c++

Beispiel:

gcc cpp_code.C -lstdc++ Die Erweiterung ( .C) in Großbuchstaben ist wichtig, damit GCC weiß, dass es sich um eine C ++ - Datei handelt.

oder explizite Angabe der Eingabesprache:

gcc -x c++ cpp_code.txt -lstdc++ Erweiterung kann alles oder gar nichts sein

Standardmäßig ist das Ergebnis (nach einer erfolgreichen Kompilierung) eine a.outDatei, mit der ausgeführt werden kann./a.out


Ihre Antwort ist informativer
Billal Begueradj
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.