Qu'est-ce qu'une commande pour compiler et exécuter des programmes C ++?


Réponses:


109

Pour compiler votre code c ++, utilisez:

g++ foo.cpp

foo.cpp dans l'exemple est le nom du programme à compiler.

Cela produira un exécutable dans le même répertoire appelé a.outque vous pouvez exécuter en tapant ceci dans votre terminal:

./a.out

g ++ devrait déjà être dans votre $ PATH, vous n'avez donc pas besoin d'appeler /usr/bin/g++explicitement, mais vous pouvez utiliser ce dernier dans tous les cas.

foo.cppdevrait être dans le même répertoire que vous exécutez la commande. En cas de doute, vous pouvez vous assurer de vous trouver dans le même répertoire en tapant ls foo.cppou head foo.cpp(si vous devez vérifier que vous travaillez avec le bon foo.)

Comme noté par @ con-f-use, le compilateur rendra ce fichier exécutable, mais si ce n’est pas le cas, vous pouvez le faire vous-même (pour que la commande à exécuter, ./a.outou une commande équivalente, fonctionne):

chmod +x ./a.out

Pour spécifier le nom du fichier de sortie compilé, afin qu'il ne soit pas nommé a.out, utilisez-le -oavec votre commande g ++.

Par exemple

g++ -o output foo.cpp

Cela compilera foo.cpple fichier binaire nommé outputet vous pourrez taper ./outputpour exécuter le code compilé.


6
Le compilateur rend généralement le binaire ( a.outdans ce cas) exécutable. Sinon , vous pouvez le faire en tapant: chmod +x a.out. Lorsque votre programme compilé est exécutable, vous pouvez le saisir en tapant ./a.outle point et la barre oblique indiquant que vous souhaitez l'exécuter.
con-f

@ Rajeshkumar, avez-vous trouvé une de ces réponses à votre goût? Si tel est le cas, pouvez-vous cocher l’une d’elles comme réponse acceptée (en cochant la case située sous les flèches de vote haut / bas) afin que nous puissions tracer une ligne au-dessous de cette question.

Existe-t-il une différence entre la sortie g ++ foo.c -o et la sortie g ++ -o foo.c?
Goldname

21

Je fais deux hypothèses ici:

  1. Vous avez déjà un fichier / programme source C ++ prêt à être créé
  2. Vous avez configuré un système de construction sur votre ordinateur

Le moyen le plus simple de compiler un programme C ++ sur Ubuntu, ou toute autre distribution Linux, est de taper

g++ main.cpp -o main
  • g ++ est l'invocation du composant C ++ de GCC , du compilateur defacto pour C / C ++ et de tout l'hôte d'autres langages sur la plate-forme Linux. C'est actuellement le seul compilateur capable de compiler le noyau Linux.
  • main.cpp est le fichier source c ++ que vous souhaitez compiler.
  • -o main spécifie le nom du fichier de sortie que vous souhaitez créer une fois la source compilée. Le fichier source cible et le fichier de sortie cible peuvent être inversés si vous le souhaitez, ils g++ -o main main.cppsont donc également valides.
  • Pour exécuter ensuite ce programme, vous devez utiliser ./main dans le terminal.

Les commandes ci-dessus supposent que vous êtes déjà à l'emplacement des fichiers source, mais le fichier source et le fichier de sortie cible peuvent également être spécifiés en tant que répertoire. Par exemple

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

compilera un fichier source C ++ situé sur votre bureau et placera le fichier binaire exécutable dans un Projectsdossier de votre répertoire personnel. Pour exécuter cet exécutable, lancez ./Projects/main.


5

C'est comme ça que j'aime compiler avec 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

J'aime ta réponse. Cela apporte des suggestions supplémentaires. Mais vous devriez vraiment le reformuler pour que ce soit généralement acceptable.
LinuxSecurityFreak

1

Vous avez besoin de g ++, car gcc ne peut pas compiler facilement le fichier cpp.
Vous devez également apprendre vim ou emacs pour écrire du code C.
Essayez ceci sur votre terminal:

Tapez un programme de test et enregistrez-le:

$vim hello.cc

Compiler hello.ccavec g ++:

$g++ hello.cc -o hello

L'exécuter:

$./hello

Ici le ./moyen signifie que le fichier exe est sous le répertoire courant.


3
gcc est le compilateur GNU pour les compilateurs C et C ++. Et l'OP n'a pas nécessairement besoin de connaître vim ou emacs pour écrire du code C, de nombreux autres éditeurs de texte et IDE flottant autour.
Nitin Venkatesh le

3
Bien que j'adore vim, si quelqu'un a déjà du mal à trouver comment gérer un problème, suggérer que vim n'est pas très utile.
johanvdw

Personnellement, je n'aime pas vi, mais ce n'est pas grave. Évitez de suggérer un éditeur spécifique, chacun utilise le sien de toute façon.
LinuxSecurityFreak

0

g++est un frontal de gcc(GNU Compiler Collection) avec des macros c ++ prédéfinies et différentes options / drapeaux par défaut.

compiler du code c ++ avec gccest pratique quand il g++n’est pas disponible pour plusieurs raisons. En fait, il s’agit simplement de se lier à la bibliothèque c ++ -lstdc++et d’informer gcc de traiter l’entrée comme du code c ++ (en utilisant une .Cextension ou en forçant le langage avec -x)
autres suffixes de noms de fichiers valides c ++: .cc, .cp, .cxx, .cpp, .CPP,.c++

exemple :

gcc cpp_code.C -lstdc++ L’extension majuscule ( .C) est importante pour que gcc sache qu’il s’agit d’un fichier c ++.

ou spécifiant explicitement la langue d'entrée:

gcc -x c++ cpp_code.txt -lstdc++ extension peut être n'importe quoi, voire rien

par défaut, le résultat (après une compilation réussie) est un a.outfichier qui peut être exécuté avec./a.out


Votre réponse est plus informative
Billal Begueradj
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.