pingoomax
Bonjour
me voila sorti (non sans mal) des premiers problemes que rencontre tout nouvel utilisateur de Linux.
mais évidement ça n'est pas fini!!
A la base j'installe linux pour pouvoir refaire les tp de c/c++ qu'on fait en cours.
[color=006633]#include <stdio>
int main()
{
printf("salut/n");
return 0;
}[/color]
et qd je fais :
[color=006633]gcc -o t.exe t.c[/color]
j'obtiens :
[color=006633][pingoo@localhost pingoo]$ gcc -o t.exe t.c
t.c:1:17: stdio : Aucun fichier ou répertoire de ce type[/color]
aucun ficier n'est créé.
j'ai testé avec g++ (et iostream, cout et endl), ça donne la meme chose.
j'ai essayé en ajoutant .h à la fin,
mais ça ne change rien!!
J'ai choisi l'installation "poste de travail" je crois que c'est comme ça qu'elle s'appelait (bref c'etait celle -la seule- où il y avit écrit "developpement")
puis j'avais verifié ce qu'il installait, et en gros, presque tous les paquets où gcc ou g++ apparaissaient étaient cochés.
Que faire??
[supprimé]
Que faire??
Installer le package glibc-headers :-D
Autre point, ton code comporte une erreur: c'est printf("salutn"); et non printf("salut/n");
A+
pingoomax
yum install glibc-headers
me dit :
glibc-headers is installed and is the latest version.
No actions to take
Que re-faire??
valhalla
Salut,
Avec gcc, met le .h (je sais que tu as deja testé mais bon, il faut toujours le mettre).
regarde si tu as bien /usr/include/stdio.h comme fichier.
Si oui, ca n'a pas de raison de ne pas fonctionner!! (tu es sur que tu avais bien sauvé quand tu as rajouté le .h??)
Et si ca marche toujours pas, compile ton fichier comme ca:
gcc -o t.exe t.c -I/usr/include
Voila!! Bon courage!
Vhalalla
[supprimé]
[pingoo@localhost pingoo]$ gcc -o t.exe t.c
t.c:1:17: stdio : Aucun fichier ou répertoire de ce type
si tu regardes bien le message de ton compilateur, tu vois bien que le probleme vient de la façon dont tu as incorporé la bibliotheque stdio.h (qui appartient à la norme C-ANSI)
tu as tapé
#include <stdio> // syntaxe C++
alors que tu aurais du tapé
#include <stdio.h> /* syntaxe C-ANSI */
Je ne suis pas un spécialiste de gcc mais il me semble que le compilateur C suit scrupuleusement la norme ANSI du C, la plupart des devs C utilisent un compilo C++ car ça marche vu que C++ tente de garder la compatibilité avec C, il est possible que ça marche avec un autre compilo c++ qui ne respectent pas la norme.
J'viens de tester avec gcc, et seule la syntaxe C-ANSI marche que tu compiles en C-ANSI ou C++
Par ailleurs, si tu es interessé, il y a des IDE complets pour developper en C comme Anjuta (pur C) ou Kdevelop (plus orienté C++ mais on peut developer en C).
par contre, voici l'équivalent en C++:
#include <iostream> // pas de .h ici
int main()
{
std::cout<<"salutn";
return 0;
}
2 bouquins quasi incontournables si ça t'interesses:
1/Le langage C Norme ANSI de Kernighan et Ritchie , les créateurs du langage et qui ont accessoirement participé à la création de Unix© avec Ken Thompson. très simple et clair, d'une taille reduite, le meilleur bouquin sur le c ANSI et pour debuter en programmation (30 euros environ)
2/Le langage C++ de Bjarne strousup, le pere du langage, c'est un gros pavé, donc un peu plus cher (36 euros) mais ça presente le c++ , la POO, la gestion de projet ...
pingoomax
il semble que la commande -I/usr/include ait marchée.
merci beaucoup!!
j'ai tenté de faire quelquechose de semblable pour iostream.h
mais c'est pas génial (en fait ça marche pas du tout).
j'ai un fichier iostream (sans .h) dans /usr/include/c++/3.3.3
et un iostream.h dans /usr/include/c++/3.3.3/backward
j'ai essayé de faire mon #include avec iostream.h et iostream
en mettant un coup -I/usr/.../3.3.3 et dans l'autre -I/usr/.../3.3.3/backward
mais je reçois un immense message d'erreur.
Que dois-je faire?
pourquoi est ce que cela ne marche pas d'origine?
est-ce que je vais devoir faire une manip de ce genre à chaque nouveau .h dont je me servirai?
valhalla
Si tu veux inclure iostream.h, c'est que tu veux certainement faire du c++. Essaye plutot g++ alors. Dans ce cas, ne met pas de .h pour iostream.h. Genre le prog tout con:
//toto.c
#include <iostream>
int main(int arc, char **argv){
return printf("FEDORA POWAn");
}
Compile le avec:
g++ toto.c -o toto
pingoomax
Salut
ben ecoute je te venere!!!
je suis persuadé d'avoir fait exactement ça, des milliers (des dizaines pour etre plus honete) de fois , avant!
je comprends pas!!
ça marche, on ne va pas se plaindre!!
merci beaucoup pour toute ton aide!!
pingoomax
houla non je retire!!
cout renvoie une erreur! pourtant il est bien dans iostream.
(j'ai juste ajouter cout<<"salutn"; avant le return)
[color=006633]toto.c: Dans function « int main(int, char**) »:
toto.c:5: error: `cout' undeclared (first use this function)
toto.c:5: error: (Each undeclared identifier is reported only once for each
function it appears in.)[/color]
pourtant j'ai essayer -I/usr/...
[supprimé]
gcc n'est pas un simple compilateur mais une collection de compileurs (Gnu Compiler Collection) et il compile le c++.
D'abord, pour compiler en c++, change l'extension en .cpp , sinon,ça ne marchera pas !
Puis essaie avec kdevelop, l'ide se chargera de donner les bonnes instructions au compilateur pour compiler ton fichier source. déjà tu verras si c'est ta ligne de commande qui est foireuse ou pas.
donc essaie g++ toto.cpp pour voir si il compile.
pingoomax
hello Anonyme,
l'extention cpp ne change rien.
je vais tester kdevelop.
Merci.
[supprimé]
ecoute, je compile avec kdevelop (donc avec gcc) et j'ai exactement les memes erreurs.
pourquoi? tu as oublié le std:: avant le cout, il y a moyen de s'en passer avec le namespace, mais au lieu de te dire une anerie (ça fait longtemps que j'ai pas fait de c++), j'prefere te donner la solution basique que j'ai d'ailleurs posté auparavant et là ça marche:
#include <iostream>
int main()
{
std::cout<<"salutn";
return 0;
}
Je ne sais pas si tes connaissances sont rouillés, ce qui peut arriver ou que tu as travaillé auparavant avec des compilos laxiste mais quand tu programmes, il faut impérativement respecter les normes, ça permet d'avoir un code propre, aisement portable et maintenable et tu eviteras bon nombre d'erreurs. c'est très appréciable quand tu as un code source de plusieurs milliers de lignes.
[supprimé]
j'veins de poster la reponse à ton probleme et n'oublies pas l'extension 😉
pingoomax
merci beaucoup a tous
pour le std, j'avais déja tester.
je pense que kdevelop a du regler des choses tout seul!!
bref je ne sais pas trop comment, mais je crois que ça marche!
De la RIGUEUR!!!
j'y penserai, maintenant.
Encore merci pour toutes vos réponses!!
Pingoomax :lol: :lol:
[supprimé]
Pas de problemes, quand j'ai commencer le C et plus tard, un peu le C++ j'ai eu aussi les meme problemes, et c'est en etant très rigoureux qu'on y arrive 🙂