Comment compiler/exécuter C ou C++ dans une console Unix ou un terminal Mac?
(Je le sais, oublie-le et réapprends-le. Il est temps de l'écrire.)
S'il s'agit d'un simple programme à source unique:
make foo
où le fichier source est foo.c ou foo.cpp, etc.
Vous n'avez même pas besoin d'un fichier makefile. Make a suffisamment de règles intégrées pour construire votre fichier source dans un exécutable du même nom, moins l'extension.
L'exécution de l'exécutable qui vient d'être construit est identique à l'exécution de n'importe quel programme - mais vous devrez le plus souvent spécifier le chemin d'accès à l'exécutable car le shell ne cherchera que ce qui se trouve dans $PATH
pour trouver des exécutables, et le plus souvent inclure le répertoire en cours (.
).
Donc, pour exécuter l'exécutable construit foo
:
./foo
gcc main.cpp -o main.out
./main.out
C'est la commande qui fonctionne sur toutes les machines Unix ... Je l'utilise sous Linux/Ubuntu, mais cela fonctionne aussi sous OS X. Tapez la commande suivante dans Terminal.app.
$ g++ -o lab21 iterative.cpp
-o
est la lettre O pas zéro
lab21
sera votre fichier exécutable
iterative.cpp
est votre fichier c ++
Après avoir exécuté cette commande, tapez ce qui suit dans le terminal pour exécuter votre programme:
$ ./lab21
Deux étapes pour moi:
première:
make foo
ensuite:
./foo
Toute exécution d’application dans un environnement Unix (Linux, Mac OS X, AIX, etc.) dépend du chemin de recherche de l’exécutable.
Vous pouvez afficher ce chemin dans le terminal avec cette commande:
echo $ PATH
Sur Mac OS X (par défaut), le chemin de recherche suivant, séparé par deux-points, sera affiché:
/ usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Ainsi, tout exécutable dans les répertoires listés peut être exécuté simplement en tapant son nom. Par exemple:
cat mytextfile.txt
Ceci exécute /bin/cat
et affiche mytextfile.txt sur le terminal.
Pour exécuter toute autre commande qui ne figure pas dans le chemin de recherche de l'exécutable, vous devez qualifier le chemin d'accès à l'exécutable. Donc, disons que j’avais un exécutable appelé MyProgram dans mon répertoire personnel sous Mac OS X, je peux le qualifier complètement de la manière suivante:
/ Utilisateurs/oliver/MyProgram
Si vous vous trouvez dans un emplacement proche du programme que vous souhaitez exécuter, vous pouvez qualifier le nom avec un chemin partiel. Par exemple, si MyProgram
était dans le répertoire /Users/oliver/MyProject
moi et moi étions dans mon répertoire personnel, je peux qualifier le nom de l'exécutable comme ceci et le faire exécuter:
Mon projet/mon programme
Ou disons que j'étais dans le répertoire /Users/oliver/MyProject2
et que je voulais exécuter /Users/oliver/MyProject/MyProgram
, je peux utiliser un chemin relatif comme celui-ci pour l'exécuter:
../MonProjet/MonProgramme
De même, si je suis dans le même répertoire que MyProgram
, je dois utiliser un chemin relatif "répertoire actuel". Le répertoire actuel dans lequel vous vous trouvez est le caractère de période suivi d'une barre oblique. Par exemple:
./MonProgramme
Pour déterminer le répertoire dans lequel vous êtes actuellement, utilisez la commande pwd
.
Si vous mettez généralement des programmes à un emplacement de votre disque dur, vous souhaitez les exécuter sans devoir qualifier leurs noms. Par exemple, si vous avez un répertoire "bin" dans votre répertoire de base pour les scripts Shell d’autres programmes régulièrement utilisés, il peut être judicieux de modifier votre chemin de recherche exécutable.
Cela peut être fait facilement en créant ou en modifiant le fichier .bash_profile
existant dans votre répertoire personnel et en ajoutant les lignes suivantes:
#!/bin/sh
export PATH=$PATH:~/bin
Ici, le caractère tilde (~) est utilisé comme raccourci pour/Utilisateurs/oliver. Notez également que la ligne de hachage (#!) Doit être la première ligne du fichier (s'il n'existe pas déjà). Notez également que cette technique nécessite que votre shell de connexion soit bash (la configuration par défaut sous Mac OS X et la plupart des distributions Linux). Notez également que si vous souhaitez que vos programmes installés dans ~/bin
soient utilisés de préférence aux exécutables système, vous devez réorganiser l'instruction d'exportation de la manière suivante:
export PATH=~/bin:$PATH
Ryan, je change cela pour être une réponse plutôt qu'un commentaire, car il semble que j'ai été trop bref. Faites tout cela dans "Terminal".
Pour utiliser le compilateur G ++, vous devez procéder comme suit:
Accédez au répertoire dans lequel vous avez stocké le fichier * .cpp.
cd ~/programs/myprograms/
(le ~ est un raccourci pour votre maison, c’est-à-dire/Utilisateurs/Ryan/programmes/myprogrammes /, remplacez-le par l’emplacement que vous avez réellement utilisé.)
Le compiler
g++ input.cpp -o output.bin
(output.bin peut être n'importe quoi avec n'importe quelle extension, vraiment. Bin est juste commun sous unix.)
Rien ne devrait être retourné s'il réussissait, et c'est d'accord. Généralement, vous obtenez des retours sur les échecs.
Toutefois, si vous tapez ls
, vous verrez la liste des fichiers dans le même répertoire. Par exemple, vous verriez les autres dossiers, input.cpp et output.bin
Depuis le répertoire, exécutez-le maintenant avec ./outbut.bin
En supposant que le répertoire en cours ne se trouve pas dans le chemin, la syntaxe est ./[name of the program]
.
Par exemple ./a.out
Ajoutez ce qui suit pour obtenir les meilleurs avertissements, vous ne le regretterez pas. Si vous le pouvez, compilez WISE (warning is error)
- Wall -pedantic -Weffc++ -Werror
Une façon compacte de faire cela pourrait être:
make foo && ./$_
C'est bien d'avoir une ligne afin que vous puissiez simplement relancer votre exécutable facilement.
Pour compiler des programmes C ou C++, il existe une commande commune:
make filename
./filename
make construira votre fichier source en un fichier exécutable portant le même nom. Mais si vous voulez utiliser la méthode standard, vous pouvez utiliser le compilateur gcc pour construire des programmes C & g ++ pour c ++
Pour C:
gcc filename.c
./a.out
Pour C++:
g++ filename.cpp
./a.out
Utilisez un makefile
. Même pour de très petits projets (= un fichier), l'effort en vaut probablement la peine, car vous pouvez avoir plusieurs ensembles de paramètres de compilateur pour tester des choses. Le débogage et le déploiement fonctionnent beaucoup plus facilement de cette façon.
Lisez le make
manual , cela semble assez long à première vue, mais vous pouvez survoler la plupart des sections. Au total, cela m'a pris quelques heures et m'a rendu beaucoup plus productif.
J'ai trouvé ce lien avec les directions:
http://www.wesg.ca/2007/11/how-to-write-and-compile-c-programs-on-mac-os-x/
En gros, vous faites:
gcc hello.c
./a.out (or with the output file of the first command)
Pour compiler et exécuter un code source cpp à partir d’un terminal Mac, il faut procéder comme suit:
entrez simplement dans le répertoire dans lequel se trouve votre fichier c/cpp.
pour compiler et exécuter du code c.
$gcc filename.c
$./a.out filename.c
pour compiler et exécuter du code c ++.
$g++ filename.cpp
$./a.out filename.cpp
"$" est le symbole du terminal mac par défaut