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

 


Dernière réponse
Sujet : Comment compiler et EXECUTER un "Hello World!!!" ???
mexx20 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 ...

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
mexx20 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 ...
axey 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

axey 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
 

philou_a7 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"
mexx20 >> 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. ;)

Jar Jar

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.

mexx20 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:
Jar Jar

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).

monokrome 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)

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

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 :/

monokrome 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

localhost 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 ;)

karoli 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:
mexx20 >>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
monokrome 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)

mexx20 >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!
matmat 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.
XDMJ ;)
karoli merde grillaaaiiiiidddddd !
karoli 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+
XDMJ ./a.out
mexx20 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.

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)