G++ sous linux

Résolu
j ai une petite question concernant g++

toto.cc

Code:

#include <iostream>
 
using namespace std;  le makefile
 
 int main()
 {
   char buffy[128];
 
   cout << "Hello World!\n";
   cin >> buffy;
 }
 

sur la console j'ai

Code:

[jean@ EssaiC++Project]$ gcc toto.cc
toto.cc:11:4: warning: no newline at end of file
/tmp/cccVL0xC.o(.text+0x1c): In function `main':
: undefined reference to `std::cout'
/tmp/cccVL0xC.o(.text+0x21): In function `main':
: 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*)'
/tmp/cccVL0xC.o(.text+0x33): In function `main':
: undefined reference to `std::cin'
/tmp/cccVL0xC.o(.text+0x38): In function `main':
: undefined reference to `std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char> >(std::basic_istream<char, std::char_traits<char> >&, char*)'
/tmp/cccVL0xC.o(.text+0x64): In function `__static_initialization_and_destruction_0(int, int)':
: undefined reference to `std::ios_base::Init::Init[in-charge]()'
/tmp/cccVL0xC.o(.text+0x93): In function `__tcf_0':
: undefined reference to `std::ios_base::Init::~Init [in-charge]()'
/tmp/cccVL0xC.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
[jean@ EssaiC++Project]$

je ne comprends pas bien les erreurs.
Merci beaucoup pour votre aide

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,
    j'ai eu le même probleme que JFrancois57 (même erreur a la compilation). C'était parce-que j'utilisais la commande
    "gcc test.cpp " (gcc pour le C)
    au lieu de
    g++ test.cpp (g++ pour le C++)
    Voili voilou! Je pense que pourra aider pas mal de personnes ;o)
  2. Apprend l'anglais tu verras qu'on ne pose plus de question ou presque sur des forums. Essaye ça:

    #include <iostream>

    using namespace std; // tu n'utiliseras que des noms de fonction compris dans la classe standard

    int main()
    {
    char buffy[128];
    cout << "Hello World!\n"; // ceci est un commentaire d'une ligne
    cin >> buffy;
    return 0; // trés important quand ta fonction "main()" de type "int"
    }

    normalement ça devrait marcher mais pour la programmation poste dans le forum réservé c'est préférable même si c'est du GNU/Linux le sujet clé est bien le langage C.
    1. Salut!!

      Il faut mettre #include <iostream.h>

      tu n'as pas mis le .h

      @+
      1. Ce n'est pas une erreur de ma part c'est bien l'en-tête <iostream> telle y est définie dans la norme contrairement à la bibliothèque C avec par exemple <stdio.h> contre <cstdio>. Fais une recherche de ces en-têtes tu verras bien qu'elles existent.
      2. bandes de mauvais!
      3. pourquoi #include est inférieur à iostream ?
    2. Sans oublier ".cpp" pour C++ ".c" pour C ce sont les extensions les plus utilisées en pratique et mieux reconnues par les compilos que ".cc" assez exotique.
      1. c'est parce que tu as un .o en trop au link...
        1. woaw une expertise comme ca ca se paye