Question

Comment compiler / exécuter C ou C ++ dans la console Unix ou un terminal Mac?

(Je le sais, oublie ça, et réapprends-le. Il est temps de l'écrire.)

Était-ce utile?

La solution

S'il s'agit d'un simple programme source:

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 recherchera que le contenu de $ PATH pour rechercher les exécutables. et le plus souvent qui n'inclut pas le répertoire en cours (. ).

Donc, pour exécuter l'exécutable construit toto :

./foo

Autres conseils

gcc main.cpp -o main.out  
./main.out

Il s’agit de la commande qui fonctionne sur toutes les machines Unix ... Je l’utilise sous Linux / Ubuntu, mais elle fonctionne également 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:

d'abord:

make foo

alors:

./foo

Toutes les applications exécutées dans un environnement Unix (Linux, Mac & X & A, X, AIX, etc.) dépendent 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 des deux-points, est affiché:

  

/ usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / X11 / bin

Ainsi, tout exécutable des répertoires listés peut s’exécuter 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 se trouve pas dans le chemin de recherche de l'exécutable, vous devez qualifier le chemin d'accès à l'exécutable. Supposons donc que j’ai un exécutable appelé MyProgram dans mon répertoire personnel sur Mac & OS X, je peux le qualifier de la manière suivante:

  

/ Users / oliver / MyProgram

Si vous êtes 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 de cette manière et le faire exécuter. :

  

MyProject / MyProgram

Ou dites 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 tel que ceci, pour l'exécuter:

  

../ MonProjet / MonProgramme

De même, si je me trouve dans le même répertoire que MonProgramme , je dois utiliser un "répertoire en cours". chemin relatif. Le répertoire actuel dans lequel vous vous trouvez est le caractère de période suivi d'une barre oblique. Par exemple:

  

./ Mon programme

Pour déterminer le répertoire dans lequel vous vous trouvez, utilisez la commande pwd .

Si vous mettez généralement des programmes dans un emplacement de votre disque dur que vous souhaitez exécuter sans devoir qualifier leurs noms. Par exemple, si vous avez un & bin; bin " répertoire de votre répertoire personnel pour les scripts shell d’autres programmes utilisés régulièrement, 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:

#!/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 (option par défaut pour 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 comme suit:

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 ++, procédez comme suit:

  1. Accédez au répertoire dans lequel vous avez stocké le fichier * .cpp.

    cd ~ / programmes / myprograms /
    (Le ~ est un raccourci pour votre maison, c'est-à-dire / Utilisateurs / Ryan / Programmes / Mes programmes /, remplacez-le par l'emplacement que vous avez réellement utilisé.)

  2. Compilez-le

    g ++ input.cpp -o output.bin (output.bin peut avoir n'importe quelle extension, en réalité. bin est commun à unix.)

    Rien ne devrait être renvoyé si l'opération a abouti, ce qui est d'accord . Généralement, vous obtenez des retours sur les échecs.

    Cependant, si vous tapez ls , vous verrez la liste des fichiers dans le même répertoire. Par exemple, vous verrez les autres dossiers, input.cpp et output.bin

  3. Depuis l'intérieur du 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 ./ [nom du programme] .

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 && ./

Une façon compacte de faire cela pourrait être:

<*>

C'est bien d'avoir un one-liner pour pouvoir relancer votre exécutable facilement.

C'est bien d'avoir un one-liner pour pouvoir relancer votre exécutable facilement.

Pour compiler des programmes C ou C ++, il existe une commande commune:

  1. créer le nom de fichier

  2. ./ nom_fichier

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 & amp; g ++ pour c ++

Pour C:

gcc filename.c

./a.out

Pour C ++:

g++ filename.cpp

./a.out

Utilisez un fichier 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 manuel make . , cela semble assez long à première vue, mais la plupart des sections que vous pouvez survoler. Au total, cela m'a pris quelques heures et m'a rendu beaucoup plus productif.

J'ai trouvé ce lien avec les instructions:

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)

entrez simplement dans le répertoire dans lequel se trouve votre fichier c / cpp.

pour compiler et exécuter le code c.

$gcc filename.c
$./a.out filename.c

pour compiler et exécuter le code c ++.

$g++ filename.cpp
$./a.out filename.cpp

" $ " est le symbole du terminal mac par défaut

Pour compiler et exécuter un code source cpp à partir d'un terminal Mac, vous devez procéder comme suit:

  1. Si le chemin du fichier cpp est somePath / nomFichier.cpp, commencez par aller dans le répertoire avec le chemin somePath
  2. Pour compiler nomfichier.cpp, tapez c ++ nomfichier.cpp -o nomfichier
  3. Pour exécuter le programme, tapez ./fileName

L'exécution d'un fichier .C à l'aide du terminal est un processus en deux étapes. La première étape consiste à taper gcc dans le terminal et à déposer le fichier .C dans le terminal, puis à appuyer sur Entrée :

username$ gcc /Desktop/test.c 

Dans la deuxième étape, exécutez la commande suivante:

username$ ~/a.out
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top