Passage sous linux : j arrive meme pas a compiler un hello world :/

Passage sous linux : j arrive meme pas a compiler un hello world :/ - C++ - Programmation

Marsh Posté le 02-03-2004 à 11:04:48    

:hello: ,
ce semester toute la programmation c++ se passe sous unix donc pendant les vacances je suis passe a linux debian pour me former.
bref..
 
version gcc 3.3.3
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. int main ()
  4. {
  5.        cout << "hello world" << endl;
  6. }


 
suivit d un gcc monprog.cpp
 

Code :
  1. gcc bug.cpp
  2. /tmp/ccDisKJM.o(.text+0x1b): dans la fonction « main »:
  3. : undefined reference to `std::cout'
  4. /tmp/ccDisKJM.o(.text+0x20): dans la fonction « main »:
  5. : undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
  6. /tmp/ccDisKJM.o(.text+0x28): dans la fonction « main »:
  7. : undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >& )'
  8. /tmp/ccDisKJM.o(.text+0x30): dans la fonction « main »:
  9. : undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >& ))'
  10. /tmp/ccDisKJM.o(.text+0x59): dans la fonction « __static_initialization_and_destruction_0(int, int)»:
  11. : undefined reference to `std::ios_base::Init::Init[in-charge]()'
  12. /tmp/ccDisKJM.o(.text+0x8a): dans la fonction « __tcf_0 »:
  13. : undefined reference to `std::ios_base::Init::~Init [in-charge]()'
  14. /tmp/ccDisKJM.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
  15. collect2: ld a retourné 1 code d'état d'exécution
  16. zsh: exit 1     gcc bug.cpp


 
    [:dams86]

Reply

Marsh Posté le 02-03-2004 à 11:04:48   

Reply

Marsh Posté le 02-03-2004 à 11:05:33    

Pour faire simple :  
g++ monprog.cpp


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 02-03-2004 à 11:07:32    

   [:dams86]  
je pars me cacher...
 
mais gcc c quoi alors ?

Reply

Marsh Posté le 02-03-2004 à 11:08:11    

Gnu compiler  Collection.
 
En fait g++ est équiivalent à gcc -lstdc++


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 02-03-2004 à 11:14:47    

ah d accord merci.
sinon pour compiler j avais lu quil y avait queque option a rajouter pour en rapport avec les warning.
 
genre g++ -lstdc++ -std ect..
j ai un peu d emal avec les centaines d option du man g++ :/

Reply

Marsh Posté le 02-03-2004 à 22:19:20    

pour avoir tous les warning ?
cest -Wall (Warning all)

Reply

Marsh Posté le 02-03-2004 à 22:37:40    

ganjo a écrit :

pour avoir tous les warning ?
cest -Wall (Warning all)


 
L'option -Wall est tellement bien nommee qu'elle n'active pas tous les warnings en fait :)

Reply

Marsh Posté le 03-03-2004 à 23:36:38    

si taz etait la, il dirait
cout << "Hello world\n";
et pas  
cout << "hello world" << endl;
:)


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 04-03-2004 à 02:48:46    

non il dirait cout << "hello world" << flush;
:P

Reply

Marsh Posté le 14-03-2004 à 10:56:30    

salut à tous!
moi je viens de commencer c++ et j'utilise bloodshed devc++pour compiler et quand je compile ce code tout simple:

Code :
  1. #include<iostream>
  2. int main()
  3. {
  4.     std::cout<<"bonjuor!\n";
  5.     return 0;
  6.     }


cam'affiche une fenetre dos avec marqué bonjour dedans, mais c completement subliminal : la fentre s'ouvre et de referme un un millieme de seconde !! pour quoi la fenetre dos ne reste elle pas ouverte?
merci !

Reply

Marsh Posté le 14-03-2004 à 10:56:30   

Reply

Marsh Posté le 14-03-2004 à 10:59:16    

parce que ton prog rend la main et que windows ferme la fenetre.
Lance le dans un prompt directement.
 
PS: tu peux utiliser endl à la place des \n en C++

Reply

Marsh Posté le 14-03-2004 à 11:07:07    

gorgologo a écrit :

salut à tous!
moi je viens de commencer c++ et j'utilise bloodshed devc++pour compiler et quand je compile ce code tout simple:

Code :
  1. #include<iostream>
  2. int main()
  3. {
  4.     std::cout<<"bonjuor!\n";
  5.     return 0;
  6.     }


cam'affiche une fenetre dos avec marqué bonjour dedans, mais c completement subliminal : la fentre s'ouvre et de referme un un millieme de seconde !! pour quoi la fenetre dos ne reste elle pas ouverte?
merci !


tu dois exécuter ton prog depuis une console dos (ouvrir les commandes msdos, utiliser cd .. et cd xxx pour aller là où se trouve ton .exe et le lancer de là), ou bien placer un getch(); à la fin de ton code (et ajouter #include <stdio.h> ), ce qui aura pour effet de te demander d'appuyer sur une touche avant de fermer.
 
edit : getch est dans conio, pas stdio


Message édité par TotalRecall le 14-03-2004 à 11:08:21

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 14-03-2004 à 12:55:39    

ou bien placer un getch(); à la fin de ton code (et ajouter #include <stdio.h>
 
ou pas vu que getch() est pas standard :o

Reply

Marsh Posté le 14-03-2004 à 13:01:28    

Taz a écrit :

ou bien placer un getch(); à la fin de ton code (et ajouter #include <stdio.h>
 
ou pas vu que getch() est pas standard :o


le but c'était de faire simple pusique il débute [:aloy]
maintenant c'est sûr que on peut faire beaucoup mieux et plus propre. Mais on peut aussi faire pire, j'aurai pu lui suggérer un SYSTEM(Pause); :whistle:


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 14-03-2004 à 13:13:50    

TotalRecall a écrit :


le but c'était de faire simple pusique il débute [:aloy]
maintenant c'est sûr que on peut faire beaucoup mieux et plus propre. Mais on peut aussi faire pire, j'aurai pu lui suggérer un SYSTEM(Pause); :whistle:

la solution simple cai de lui dire ce qui marche et ce qui marche pas, pas de foutre en l'air ces bases dès le début

Reply

Marsh Posté le 14-03-2004 à 14:16:58    

et cin.get() ?

Reply

Marsh Posté le 14-03-2004 à 14:23:59    

#include <iostream>  
  using namespace std;
 
#include <iostream>
int main ()
 
tu utilise l' objet cout une seul fois pourquoi pas mettre tout simplement std::cout <<
nico le boulanger

Reply

Marsh Posté le 14-03-2004 à 16:32:16    

merci les gars !
en fait à la fin juste avant le return 0; j'ai fait :

Code :
  1. int h;
  2. std::cin >> h;


donc la j'ai une invite de commande ou je sais pas comment ca s'apelle...
y a certainement mieux...mais bon je débute !
merci !

Reply

Marsh Posté le 14-03-2004 à 17:32:33    

cin.ignore() ou scanf("%*d" )


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 14-03-2004 à 17:43:02    

Taz a écrit :

la solution simple cai de lui dire ce qui marche et ce qui marche pas, pas de foutre en l'air ces bases dès le début


je m'attendais à ce genre de remarques, mais je vois pas en quoi le fait d'utiliser ça une fois juste pour contourner un petit problème va "foutre ses bases en l'air" :sarcastic:
bref, fermons la parenthèse.


Message édité par TotalRecall le 14-03-2004 à 17:43:24

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 14-03-2004 à 17:46:21    

parce que tu lui balances ça sans lui dire ce que ça implique.

Reply

Marsh Posté le 14-03-2004 à 19:24:53    

en fait j'ai acheté un gros bouquin que je prend depuis le début et je compte le faire jusqu'à la fin avec tout ses exercices et tout...donc pour ce qui est des bases j'espere que je me donne les moyens de les apprendre...
en tout cas c quoi : #include <stdio.h> , c pou inclure une nouvelle librairie ? et la fonction getch() sert à quoi dans ce cas la?
voila juste pour info puisque tu m'en a parlé TotalRecall...
merci encore....
et a bientot, je sens que des questions cons comme celles la je risque d'en poser souvent...meme si j'essaie d'abord de m'en sortir par moi meme c'est pas toujours facile...

Reply

Marsh Posté le 14-03-2004 à 19:47:14    

tu sais, l'inclusion des headers est vraiment quelque chose de fondamental, tu ferais aussi bien de regarder ton bouquin pour voir tout de suite ce que c'est.
Getch attend que tu tapes quelque chose au clavier. Elle n'envoie ni valeur de retour, et n'exige as d'argument : c'est pour ça que je t'ai donné ça comme solution, y a pas plus simple, même si il y a mieux.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 14-03-2004 à 20:14:07    

si ya une valeur de retour, getch renvoi le caracter taper

Reply

Marsh Posté le 14-03-2004 à 20:31:53    

skelter a écrit :

si ya une valeur de retour, getch renvoi le caracter taper


encore heureux, mais on est pas obligé de l'utiliser. (jmemmele entre getchar, getch et cie, faudra que je jette un oeil à ça)


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 16-03-2004 à 01:35:03    

include <cstdlib>
.
.
.
.
.
 
 
system("pause" ); // ou SYSTEM ("pause)

Reply

Marsh Posté le 15-07-2004 à 15:57:31    

Salut!
JE voudrais rapporter un peu d'eau au moulin et avoir votre avis sur un point:
 
Je fais exactement la mme chose que xiluoc a savoir:
#include <iostream>  
  using namespace std;  
   
  int main ()  
  {  
           cout << "hello world" << endl;  
     
  }  
 
La seul différence visiblemen c'est que moi je suis sur HP11
Le prog compile mais ne link pas.
 
ld: Unrecognize argument : +init
 
 
Quelqu'un a t'il une idée?
 
Seb

Reply

Marsh Posté le 15-07-2004 à 15:59:20    

tu peux faire un ld --version, je soupsonne que ce ne soit pas le bon linkeur qui est appelé


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 15-07-2004 à 16:24:16    

ca marche pas:
toujours un argument inconu.
Je n'ai pas trouvé de version dans le man non plus.
 
C'est étrange!!
 
ld n'est pas sensé être installé avec gcc?
Parce que le gcc a été réinstallé récemment alors j'ose espérer que le ld est a jour mais comme ca chie, je me dis que c'est peut etre pas le cas.
 

Reply

Marsh Posté le 16-07-2004 à 11:44:50    

Pour info:
j'ai installé le patch PHSS_30966 et maitenant ca marche.
Ct bien un pbm de version de ld....
 

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed