Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2307 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  Comment compiler et EXECUTER un "Hello World!!!" ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment compiler et EXECUTER un "Hello World!!!" ???

n°119542
mexx20
Posté le 01-07-2002 à 22:54:46  profilanswer
 

Bonsoir à tous. Ca va surement vous paraître tout bete comme question. Mais je suis sous linux depuis 1 semanine à peine! Alors voilà, je crée un nouveau fichier a.cpp avec la commande "emacs a.cpp". Ensuite, je tape mon code que voici :
 
#include <stdlib.h>
#include <iostream.h>
 
int main(){
  cout<<"Hello World!!!"<<endl;
  return(EXIT_SUCCESS);
}
 
Je sauve, je quitte. Je fais g++ a.cpp et ça me crée un fichier a.out ds le répertoire courant. J'essaye de l'executer en tapant "a.out" et ça me fait "no such command" J'ai essayé avec l'option "-c" mais d'après le man c'est uniquement pour la compilation (pas de linkage) Alors en cherchant un peu je trouve la commande ld pour le linker GNU ??? En faisant "ld -o a.exe a.out" ca me crée mon a.exe ;-) MAIS!! Encore une fois je n'arrive pas à l'éxecuter en tapant "a.exe" ou "a" tout court j'obtient "no such command". Comment executer mon programme et est-ce que l'extension .exe à la même signification sous linux que sous windows? Merci d'avance pour vos réponses.

mood
Publicité
Posté le 01-07-2002 à 22:54:46  profilanswer
 

n°119546
XDMJ
Posté le 01-07-2002 à 22:58:02  profilanswer
 

./a.out

n°119547
karoli
Posté le 01-07-2002 à 22:58:22  profilanswer
 

j'y conais rien au C mais si t'as pas mis ton "a" dans le path, il faut le lancer depuis ou il se trouve en tapant ./a
 
a+


---------------
FeedBack
n°119548
karoli
Posté le 01-07-2002 à 22:58:46  profilanswer
 

merde grillaaaiiiiidddddd !


---------------
FeedBack
n°119549
XDMJ
Posté le 01-07-2002 à 22:59:24  profilanswer
 

;)

n°119551
matmat
Posté le 01-07-2002 à 22:59:53  profilanswer
 

dans le répertoire où se trouve a.out, tape :
./a.out
 
explication: quand un executable ne se trouve pas dans le PATH, il faut préciser le chemin (ici ./) pour le lancer.

n°119565
mexx20
Posté le 01-07-2002 à 23:23:08  profilanswer
 

>xdmj: Génial!! Ca fonctionne! Thx pour ta rapidité! Donc si je comprends bien les "*.out" ne sont pas les modules objets mais les exectutables? C'est bien ca? ".out" ss linux == ".exe" ss windows ??
 
>karoli: Merci aussi mais tu es vachement plus lent ;-)grillaaaiiiiidddddd, c'est quoi ca?
 
>matmat: Au fait le "PATH" c quoi exactement? C'est pas une variable d'environnement similaire à "PATH" sous windows qui contient tout les répertoires pour lesquels on peux éxecuter direcement les programmes contenu ds ces répertoires?? Si c'est ce que je pense, comment, sous linux, peux - t - on enrichir cette variable pour par exemple ajouter mon "/home/." ??
 
Merchiii!

n°119566
monokrome
nocturne
Posté le 01-07-2002 à 23:32:18  profilanswer
 

les .o c les fichiers objets, dans ton cas tu as pas le temps de les voir, ils sont linké directos, et hop binaire..
 
sous Linux y a pas de .exe; c juste un attribut, par ex pour rendre un script executable tu fait chmod +x fichier et voila, fichier est considéré comme un binaire a part entiere..
 
la PATH c un ensemble de repertoire (genre

Code :
  1. /bin:/usr/bin:/usr/local/bin,

etc)
 
et en effet les rep/sous-rep /bin /sbin contiennent tous les binaires, c beaucoup plus logique comme raisonnement que des rep ertoires disparates (program files et autres conneries)
 
pour enrichir ton PATH, si tu utilises bash ( 98 % de chance) tapes :
 

Code :
  1. PATH=$PATH:/home/tonnom/bin


 
(je te conseille de faire un rep bin et un lib dans ton home, c plus pratique quand tu prog :)
 
edit: merd j'arrive po avec ces balises, remplace :/ par : / (sans espace)


Message édité par monokrome le 01-07-2002 à 23:34:40
n°119593
mexx20
Posté le 02-07-2002 à 00:43:03  profilanswer
 

>>monokrome: Purée de purée je commence à me rendre compte que Linux est nettement mieux que Windows! Ca fait à peine une semaine que je le découvre et je trouve qu'il a été bcp mieux pensé et qu'il est plus simple que windows finallement! T'as as tout à fait raison pour le truc des "program files" et autres! C'est moins logique. J'aime bien cette idée d'attribut pour un executable! Et puis le fait de pouvoir "monter" ce qu'on veux où on veux! On a plus tout les A: C: D: E: et autres! Ce que j'aime aussi c'est l'unique pts de départ "/" Bref Linux c'est vraiment bien ;-)
 
Pour revenir au sujet, merci pour tes infos sur "PATH". Tu as raison pour le rep "/bin" et "/lib" ds le "/home", c'est pas bete. Alors, autre question : J'aimerai utiliser le fichier "conio.h" qui était par défaut sur mon compilateur BCC sous windows. Où dois je le placer pour qu'il sois avec les autre fichier genre "iostream.h", ... ??
 
Thx


Message édité par mexx20 le 02-07-2002 à 00:43:56
n°119595
karoli
Posté le 02-07-2002 à 00:54:04  profilanswer
 

si je peux emettre une pitite reserve :
le /home dans le path c'est moyen niveau secu...
si un mec arrive a se logguer sur ta becane sous ton nom,donc pas en root il pourra ecrire et executer ce qui s'y trouve...
c'est chaud
 
edit: grillaid pcke il m'a grille...suis trp lent !
m'enfin de 20 secondes  :na:


Message édité par karoli le 02-07-2002 à 00:55:59

---------------
FeedBack
mood
Publicité
Posté le 02-07-2002 à 00:54:04  profilanswer
 

n°119605
localhost
127.0.0.1
Posté le 02-07-2002 à 01:24:25  profilanswer
 

monokrome a écrit
les .o c les fichiers objets, dans ton cas tu as pas le temps de les voir, ils sont linké directos, et hop binaire..
 
sous Linux y a pas de .exe; c juste un attribut, par ex pour rendre un script executable tu fait chmod +x fichier et voila, fichier est considéré comme un binaire a part entiere..
 
la PATH c un ensemble de repertoire (genre

Code :
  1. /bin:/usr/bin:/usr/local/bin,

etc)
 
et en effet les rep/sous-rep /bin /sbin contiennent tous les binaires, c beaucoup plus logique comme raisonnement que des rep ertoires disparates (program files et autres conneries)
 
pour enrichir ton PATH, si tu utilises bash ( 98 % de chance) tapes :
 

Code :
  1. PATH=$PATH:/home/tonnom/bin


 
(je te conseille de faire un rep bin et un lib dans ton home, c plus pratique quand tu prog :)
 
edit: merd j'arrive po avec ces balises, remplace :/ par : / (sans espace)
 
 
------
 
cai plus lisible ;)


Message édité par localhost le 02-07-2002 à 01:26:21

---------------
#!/usr/bin/girl
n°119606
monokrome
nocturne
Posté le 02-07-2002 à 01:27:14  profilanswer
 

j'ai pas dit /home mais un rep /home/bin dans le path nuance  :)  
 
de ttes facons si kkun a réussi a se logguer sur son compte il a sans doute bien mieux a faire que de se précoccuper du $PATH nan ?
 
bah les gens sérieux ne travaillent pas sur la machine reliée au net  
 
 :D  
 
sinon pour tes header, personnellement (ca engage que moi donc, sur ma machine ou g que mon compte), g fait un rep /home/nom/include et quand je compile une de mes applis je rajoute a la commande pour compiler (au makefile enfin bon je simplifie)  
 
-I/home/tonnom/include
 
ou alors tu met tes headers a toi dans un sous-rep de tes sources et dans ton code tu fout  
 
 
 
 

Code :
  1. #include "monhead.h"
  2. ou #include "heads/monhead.h"

 
 
le + important étant de comprendre que <> définit un fichier systeme et "" un fichier "local"
 
sinon pour en revenir a l'arborescence, c comme ca depuis 30 ans (Unix), ca a fait ses preuves et c pas pres de disparaitre

n°119607
monokrome
nocturne
Posté le 02-07-2002 à 01:28:24  profilanswer
 

localhost a écrit a écrit :

monokrome a écrit
les .o c les fichiers objets, dans ton cas tu as pas le temps de les voir, ils sont linké directos, et hop binaire..
 
sous Linux y a pas de .exe; c juste un attribut, par ex pour rendre un script executable tu fait chmod +x fichier et voila, fichier est considéré comme un binaire a part entiere..
 
la PATH c un ensemble de repertoire (genre

Code :
  1. /bin:/usr/bin:/usr/local/bin,

etc)
 
et en effet les rep/sous-rep /bin /sbin contiennent tous les binaires, c beaucoup plus logique comme raisonnement que des rep ertoires disparates (program files et autres conneries)
 
pour enrichir ton PATH, si tu utilises bash ( 98 % de chance) tapes :
 

Code :
  1. PATH=$PATH:/home/tonnom/bin


 
(je te conseille de faire un rep bin et un lib dans ton home, c plus pratique quand tu prog :)
 
edit: merd j'arrive po avec ces balises, remplace :/ par : / (sans espace)
 
 
------
 
cai plus lisible ;)




 
merci  ;)

Code :
  1. test :/

n°119608
localhost
127.0.0.1
Posté le 02-07-2002 à 01:29:26  profilanswer
 

Juste comme ça, l'est ou $PATH ?
 
Ca se présente sous fichier texte ?


---------------
#!/usr/bin/girl
n°119611
monokrome
nocturne
Posté le 02-07-2002 à 01:33:57  profilanswer
 

non, c une variable d'environnement définit au démarrage du systeme dans les fichiers de /etc/rc.d/xxx et pour chaque user dans ses fichiers rc perso (genre .bashrc, .profile, etc).
 
pour voir a quoi ca ressemble :
 

Code :
  1. echo $PATH


 
et comme tu es curieux et que tu te demande si y en a d'autres, oui, tu peut les voir comme ca :
 

Code :
  1. set|more


 
 
edit : y a aussi d'autre fichiers, comme le /etc/profile, ca dépends des distri et des OS (c sensiblement différent sur les *BSD)


Message édité par monokrome le 02-07-2002 à 01:35:14
n°119657
Jar Jar
Intaigriste
Posté le 02-07-2002 à 09:12:02  profilanswer
 

Mexx20 a écrit a écrit :

Alors, autre question : J'aimerai utiliser le fichier "conio.h" qui était par défaut sur mon compilateur BCC sous windows. Où dois je le placer pour qu'il sois avec les autre fichier genre "iostream.h", ... ??


conio ne marche pas sous unix, c'est un truc du DOS.
Il faut installer ncurses-dev, et regarder dans la doc comment convertir un programme utilisant conio à ncurses, c'est assez facile (et ncurses est beauuuuucoup plus puissant).


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°121174
mexx20
Posté le 05-07-2002 à 03:04:21  profilanswer
 

Au fait j'utilise les fonction "getch()" et "clrscr()" de "conio.h". La première permet de rentrer un caractère sans devoir appuyer sur "entrée". Ce qui permet de faire des pauses ds les prog par exemple. La deuxième efface ce qui se trouve à l'écran... Si tu pouvais me dire l'équivalent ds une bib propre à linux ça serait super  :wahoo:

n°121206
Jar Jar
Intaigriste
Posté le 05-07-2002 à 10:28:39  profilanswer
 

Mexx20 a écrit a écrit :

Au fait j'utilise les fonction "getch()" et "clrscr()" de "conio.h". La première permet de rentrer un caractère sans devoir appuyer sur "entrée". Ce qui permet de faire des pauses ds les prog par exemple. La deuxième efface ce qui se trouve à l'écran... Si tu pouvais me dire l'équivalent ds une bib propre à linux ça serait super  :wahoo:


L'équivalent de getch dans ncurses, c'est getch (regarde dans la page de manuel pour le configurer comme tu veux, il a plein de modes de fonctionnement différents).
Pour effacer l'écran, c'est clear.
 
Tout est très bien expliqué dans ncurses(3). En particulier, pour d'évidentes raisons d'optimisations, tu dessines plein de trucs, et il faut faire un appel à refresh pour les afficher.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°204429
mexx20
Posté le 23-12-2002 à 06:55:40  profilanswer
 

>> JaJar : J'ai installé libncurses5-dev ... Dans mon programme
je fait "#include <curses.h>" comme indiqué dans le man (ncurses(3)) et j'appelle une fois la fonction clear() et à la compilation il y a cette erreur :
 
 


/tmp/ccOWAZUE.o: In function 'main':
/tmp/ccOWAZUE.o(text+0x7): undifined reference to 'clear'
collect 2: lod returned 1 exit status

 
 
Mon programme c'est tjours le même :
 


#include <stdlib.h>
#include <iostream.h>
#include <curses.h>
 
int main(){
 clear();
 cout<<"Hello World!!!"<<endl;
 return(EXIT_SUCCESS);
}
 


 
On dirait un problème de linkage mais je ne suis pas sur. Merci de ton aide. ;)


Message édité par mexx20 le 23-12-2002 à 06:56:55
n°204433
philou_a7
\_o&lt; coin ! &gt;o_/
Posté le 23-12-2002 à 09:18:07  profilanswer
 

Il faut aussi que tu dises à gcc de faire un lien avec la bibliotheque ncurses ;)
 
dans ton cas, la compilation devient "g++ test.c -lncurses"

n°204476
axey
http://www.00f.net
Posté le 23-12-2002 à 12:04:21  profilanswer
 

iostream.h ca n'existe pas, les entetes standards du C++ n'ont pas d'extension. Il faut faire
 
#include <iostream>
 
Et EXIT_SUCESS/EXIT_FAILURE sont des constantes qui servent uniquement a la fonction exit() . Par exemple sous VMS, ce sont des chaines de caracteres, donc ta fonction main() qui renvoit un objet de type "int" n'appreciera pas du tout.
Contente-toi d'un
 
return 0;
 
Dernier truc : si ton code source est en c++, donne-lui l'extension .cpp
 
$ cat > yop.cpp

Code :
  1. #include <iostream>
  2. int main(void)
  3. {
  4.    std::cout << "yop" << std::endl;
  5.    return 0;
  6. }


 
$ make yop
 
$ ./yop
 

n°204478
axey
http://www.00f.net
Posté le 23-12-2002 à 12:08:23  profilanswer
 

Avec l'effacement de l'ecran :
 

Code :
  1. #include <iostream>
  2. #include <ncurses.h>
  3. int main(void)
  4. {
  5.    if (initscr() == NULL || clear() != OK) {
  6.         return 1;
  7.    }
  8.    std::cout << "yop" << std::endl;
  9.    return 0;
  10. }


 
Fous ca dans un fichier yop.cpp, puis :
 


$ env LDFLAGS=-lncurses make yop
$ ./yop


Message édité par axey le 23-12-2002 à 12:10:20
n°204638
mexx20
Posté le 23-12-2002 à 21:51:24  profilanswer
 

merci!! ;-)
 
ca fonctionne sauf que la console devient folle après l'execution
du programme (le petit que tu donne exemple aussi) et cela en X
et en normal ... En fait tout est décalé et je ne vois plus ce que je tape ...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  Comment compiler et EXECUTER un "Hello World!!!" ???

 

Sujets relatifs
Gros Newbie in the Linux World cherche doc pour config Linux.checking whether the C compiler (gcc ) works... no
[Newbie] Executer un fichier depuis la console[gcc] checking whether the C compiler (gcc ) works... no Je fé quoi
Executer un script en Background...Peux pas compiler mon noyau avec Athlon 1800+
ListDriver quand on veux executer pengaol.Comment compiler du LateX sous LINUX???
Comment executer un Script de n'importe ou ?exécuter un programme en shell sous windows
Plus de sujets relatifs à : Comment compiler et EXECUTER un "Hello World!!!" ???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR