# Exécution d'un prog C++ avec le terminal



## Steph-24 (16 Septembre 2006)

Salut à tous,

Je suis depuis quelques jours en DUT informatique. Et pour les cours, on nous demande de programmer en C++ de la manière suivante:

On utilise des PC sous Linux, on lance un terminal et la commande suivante:
kwrite nomduprogramme.cpp
Ce qui nous ouvre un éditeur de texte pour écrire le programme. On finit par compiler grace à l'instruction g++ et ensuite on éxecute le fichier de sortie (par exemple: nomduprogramme.out)

J'ai donc voulu reproduire le même travail avec mon mac et pour cela j'ai installer X11 et nedit. J'arrive donc à écrire mes programme, les compiler avec l'instruction g++ dans le terminal de X11, mais je n'arrive pas à exécuter le fichier de sortie.
le terminal me donne l'erreur suivante: -bash: nomduprogramme.out: command not found  

Je ne vois pas de solution à mon problème et j'aimerais bien pouvoir réaliser mes travaux sur mon mac au lieu de devoir installer une distribution Linux.

Si quelqu'un peut m'aider, je le remercie d'avance.


----------



## ntx (16 Septembre 2006)

./nomduprogramme.out

Il faut ajouter "./" si ton répertoire n'est pas dans le chemin défini dans PATH.
Il n'y aucunement besoin d'installer Linux pour faire tes TP d'info.


----------



## Frizou (16 Septembre 2006)

si tu veux &#233;viter d'ajouter "./" avant chaque nom de programme, &#233;dite les fichiers ".bashrc" et ".bash_profile" qui se trouvent &#224; ta racine et et ajoute la ligne suivante &#224; chacun de ces deux fichiers : 

PATH=$PATH:.:

NB : Si tu as d&#233;j&#224; une ligne qui ressemble &#224; PATH=$PATH:xxxxxxxx:, il te suffit d'ajouter ".: &#224; la fin de la ligne afin d'abtenir PATH=$PATH:xxxxxxxx:.:


----------



## Steph-24 (16 Septembre 2006)

Merci à vous deux pour vos réponses rapides.

Cependant, j'ai essayé en rajoutant "./" devant le nom de fichier mais maintenant, le terminal me donne l'erreur suivante: 

bash: ./nomduprogramme.out: cannot execute binary file

Est-ce que vous avez une idée?


----------



## ntx (16 Septembre 2006)

Est ce que ton fichier est exécutable : quels sont ses droits ?
chmod +x nomduprogramme.out pour le rendre exécutable.


----------



## Steph-24 (16 Septembre 2006)

ntx a dit:


> Est ce que ton fichier est exécutable : quels sont ses droits ?
> chmod +x nomduprogramme.out pour le rendre exécutable.



Les droits de mon fichiers sont les suivants:

rwxrwxrwx. Donc je pense qu'il a tout les droits. D'après mes faibles connaissances en Unix,  . (Je rappelle juste que je fonctionne sous le terminal de X11, et non pas sous celui de MacOS X, même si je ne sais pas si c'est les même)


----------



## ntx (16 Septembre 2006)

Comment as-tu compil&#233; ton programme ? Quelle commande ?


----------



## Steph-24 (16 Septembre 2006)

ntx a dit:


> Comment as-tu compilé ton programme ? Quelle commande ?



J'ai compilé mon programme avec la commande g++!


----------



## ntx (16 Septembre 2006)

Steph-24 a dit:


> J'ai compilé mon programme avec la commande g++!


Certes mais quelle commande exactement ?


----------



## Steph-24 (16 Septembre 2006)

ntx a dit:


> Certes mais quelle commande exactement ?



$ g++ -o nomduprogramme.out nomduprogramme.cpp


----------



## ntx (16 Septembre 2006)

Et tu as bien installé les outils de développement ? La commande g++ est reconnue ? Que donne "which g++" ?


----------



## Steph-24 (17 Septembre 2006)

ntx a dit:


> Et tu as bien installé les outils de développement ? La commande g++ est reconnue ? Que donne "which g++" ?



La seule chose que j'ai fait, c'est que j'ai installé X11 à partir du dvd de tiger et j'ai ensuite placé le fichier nedit dans le dossier /usr/X11R6/bin.
La commande g++ était reconnue dès mon premier test de compilation.

Et pour which g++, le terminal me retourne: "/usr/bin/g++"


----------



## ntx (17 Septembre 2006)

Installe les outils de d&#233;veloppement et reviens nous voir ensuite.    

PS : le compilateur par d&#233;faut pour Mac OSX est gcc et non g++.

PS 2 : tu peux compiler dans le terminal UNIX, tu n'est pas obliger d'ouvrir X11.


----------



## Steph-24 (17 Septembre 2006)

ntx a dit:


> Installe les outils de développement et reviens nous voir ensuite.
> 
> PS : le compilateur par défaut pour Mac OSX est gcc et non g++.
> 
> PS 2 : tu peux compiler dans le terminal UNIX, tu n'est pas obliger d'ouvrir X11.



Quels outils de développement dois-je installer? Xcode ou autre?


----------



## ntx (17 Septembre 2006)

Steph-24 a dit:


> Quels outils de d&#233;veloppement dois-je installer? Xcode ou autre?


Ceux qui sont sur ton DVD de Mac OSX (XCode en est un morceau suffisant pour pouvoir coder) ou si tu veux la derni&#232;re version tu peux la trouver sur l'ADC (enrgistrement gratuit obligatoire).


----------



## Steph-24 (17 Septembre 2006)

ntx a dit:


> Ceux qui sont sur ton DVD de Mac OSX (XCode en est un morceau suffisant pour pouvoir coder) ou si tu veux la dernière version tu peux la trouver sur l'ADC (enrgistrement gratuit obligatoire).



Les outils de développement sont installés chez moi (Xcode, Interface Builder etc...) mais je ne peu toujours rien faire avec le terminal.
Cela veut-il dire que je dois compiler et exécuter avec Xcode?


----------



## ntx (17 Septembre 2006)

Steph-24 a dit:


> je ne peu toujours rien faire avec le terminal.


Que fais-tu exactement ? A quoi ressemble ton programme ? Quelles sont les erreurs affichées ?


> Cela veut-il dire que je dois compiler et exécuter avec Xcode?


Ce n'est pas une obligation, mais si ça te permet d'avancer.


----------



## Steph-24 (17 Septembre 2006)

ntx a dit:


> Que fais-tu exactement ? A quoi ressemble ton programme ? Quelles sont les erreurs affichées ?



J'essaye juste de faire la même chose qu'en cours (j'ai décrit les étapes plus haut). Le faire avec Xcode ne m'intéresse pas puisqu'on travaille pas dessus en cours. On travaille sous Linux (Mandriva) et pour faire mon boulot, j'ai pour le moment beosin d'installer Ubuntu sur mon PC (et encore tout ne fonctionne pas).


En résumé, ce que je cherche à faire c'est:

- Ecrire un programme en C++ avec nedit ou un autre éditeur de texte (je ne connais que nedit sous mac)
- Le compiler avec l'instruction g++ dans le terminal (Mac OS X ou X11)
- l'exécuter à partir du terminal (Mac OS X ou X11)

J'ai juste installé X11, les outils de dévellopement et nedit!


----------



## p4bl0 (17 Septembre 2006)

Steph-24 a dit:


> J'essaye juste de faire la m&#234;me chose qu'en cours (j'ai d&#233;crit les &#233;tapes plus haut). Le faire avec Xcode ne m'int&#233;resse pas puisqu'on travaille pas dessus en cours. On travaille sous Linux (Mandriva) et pour faire mon boulot, j'ai pour le moment beosin d'installer Ubuntu sur mon PC (et encore tout ne fonctionne pas).


Et tu as bien raison, c'est tr&#232;s bien que le cours ne commence pas avec l'utilisation d'un IDE 




Steph-24 a dit:


> En r&#233;sum&#233;, ce que je cherche &#224; faire c'est:
> 
> - Ecrire un programme en C++ avec nedit ou un autre &#233;diteur de texte (je ne connais que nedit sous mac)


Voici une liste de bon &#233;diteur de texte sous mac (et qui ne n&#233;cessite pas X11) :
 - TextMate : payant 39&#8364;, G&#201;NIAL !, va voir les screencast si tu as le temps
 - TextWrangler : pas beau et bien moins puissant que TextMate, mais gratuit.
 - BBEdit : grand fr&#232;re de TextWrangler &#224; 99&#8364;  C'est quand m&#234;me un des plus puissant, avec TextMate.
 - Smultron : Sa grande (et quasiment unique ?) qualit&#233; est d'&#234;tre libre.
 - SubEthaEdit : permet d'&#233;diter un fichier &#224; plusieurs, mais pas de notion de projet et un seul fichiers par fen&#234;tre, gratuit pour un usage non commerciale, sauf pour les derni&#232;res versions qu'il faut payer de toute fa&#231;on




Steph-24 a dit:


> - Le compiler avec l'instruction g++ dans le terminal (Mac OS X ou X11)


Utilise le terminal de OS X.

```
$ g++ -o nomDeLExecutable tonFicher.cpp
```




Steph-24 a dit:


> - l'ex&#233;cuter &#224; partir du terminal (Mac OS X ou X11)


Un ./nomDeLExecutable pour le lancer, sauf si tu as ajout&#233; . (le point repr&#233;sente le r&#233;pertoire courant sous unix) &#224; ton PATH (dans le ~/.profile par exemple)




Steph-24 a dit:


> J'ai juste install&#233; X11, les outils de d&#233;vellopement et nedit!


C'est largement suffisant (il te suffit des outils de d&#233;veloppement (pour les compilo etc...))


----------



## ntx (17 Septembre 2006)

Et avec gcc ça donne quoi ? Tu n'aurais pas un problème de linkage ? N'y aurait-il pas un message plus explicite dans la console ? Qu'y a-t-il dans ton programme ? Utilises tu une librairie extérieure ?

Chez moi ça marche sans problème sur un "Hello world" aussi bien avec gcc qu'avec g++.


----------



## Steph-24 (17 Septembre 2006)

Bon j'ai réessayé depuis le début et je crois avoir cerné le problème.

Grace à vos conseils, j'arrive maintenant à écrire un programme, le compiler et l'exécuter à partir du terminal.
J'ai essayé un Hello World comme me l'a conseillé ntx et ça fonctionne. J'utilise juste une librairie d'entrée sortie (iostream)

Par contre le problème que j'ai, c'est que j'arrive donc à exécuter un programme que j'ai entièrement fait sur mon mac (éditer et compiler) mais je n'arrive pas à exécuter un programme qui vient de mon univeristé. Ce n'est pas une question de droit mais le terminal me renvoie l'erreur suivante:

*-bash: ./Facture: cannot execute binary file*

En gros:

Un programme éditer et compiler sur mon mac: Ca marche!!!  
Un programme éditer et compiler sous linux à l'université: erreur citée ci-dessus


----------



## ntx (17 Septembre 2006)

Steph-24 a dit:


> Par contre le problème que j'ai, c'est que j'arrive donc à exécuter un programme que j'ai entièrement fait sur mon mac (éditer et compiler) mais je n'arrive pas à exécuter un programme qui vient de mon univeristé. Ce n'est pas une question de droit mais le terminal me renvoie l'erreur suivante:
> 
> *-bash: ./Facture: cannot execute binary file*


Ben oui : un programme compilé sous Linux ne marche que sous Linux ! :rateau: Tu aurais pu précisé ce détail plus tôt  

Donc si tu veux bosser chez toi, récupère les sources et compile sur ton Mac. Quand tu as fini, expédie tes sources à la fac et compile sur le PC de la fac.


----------



## Steph-24 (17 Septembre 2006)

ntx a dit:


> Ben oui : un programme compilé sous Linux ne marche que sous Linux ! :rateau: Tu aurais pu précisé ce détail plus tôt
> 
> Donc si tu veux bosser chez toi, récupère les sources et compile sur ton Mac. Quand tu as fini, expédie tes sources à la fac et compile sur le PC de la fac.



Oui effectivement! Maintenant que tu m'y fait pensé    

Désolé de ne pas avoir précisé ce détail plus tôt.

Je pense que j'ai tout les éléments pour travailler correctement sur mon mac maintenant au lieu des ces vieux PC sous linux.  

Merci beaucoup à toi ntx pour ton aide ainsi qu'à tous les autres qui ont pu m'aider depuis hier.


----------



## tatouille (22 Septembre 2006)

Steph-24 a dit:


> Oui effectivement! Maintenant que tu m'y fait pensé
> 
> Désolé de ne pas avoir précisé ce détail plus tôt.
> 
> ...



asmx86 et  asmppc 
de plus le storage des mac os est mach-o et non elf

? t'as eu un cours avant d'écrire quelque chose ?????????????????????????????
processeur / arch / storage / kernel / libc  ??????????????????????

tu aurais dû utiliser  cet  icon  -> :rose:


----------



## Steph-24 (24 Septembre 2006)

tatouille a dit:


> asmx86 et  asmppc
> de plus le storage des mac os est mach-o et non elf
> 
> ? t'as eu un cours avant d'écrire quelque chose ?????????????????????????????
> ...



:rose: :rose: :rose: :rose:   T'es content?


----------

