47 votes

Erreur lors de la compilation d'un code c++ simple

J'essaie de compiler ce code cpp sur osx lion mais j'obtiens une erreur.

 #include <iostream> 

using namespace std; 

int main (int argc, char *argv[]) 
{ 
    for(int i = 0; i < 10; i++) 
    { 
        cout << "hi"; 
        cout << endl; 
    } 

    return 0; 
}

Compiler:

 cc main.cpp

Erreur:

 Undefined symbols for architecture x86_64:
  "std::cout", referenced from:
      _main in ccBdbc76.o
  "std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
      _main in ccBdbc76.o
  "std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)", referenced from:
      _main in ccBdbc76.o
  "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> >&))", referenced from:
      _main in ccBdbc76.o
  "std::ios_base::Init::Init()", referenced from:
      __static_initialization_and_destruction_0(int, int)in ccBdbc76.o
  "std::ios_base::Init::~Init()", referenced from:
      ___tcf_0 in ccBdbc76.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

5voto

Allisone Points 1142

Essayer

 g++ main.cpp

De cette façon, cela devrait fonctionner, au moins en utilisant OS X

3voto

S.C. Madsen Points 2342

Je ne connais pas OSX LION. Cependant, au sens le plus strict, les erreurs décrites ne sont pas causées par le compilateur, mais par l'éditeur de liens. Il semble que la bibliothèque standard ne soit pas liée.

3voto

AndrzejJ Points 536

Utilisez la commande CC (majuscule) pour compiler C++ et créer un lien vers la bibliothèque C++ standard.

1voto

AlistairIsrael Points 3673

Depuis Yosemite (10.10.1), j'ai trouvé que gcc avec l' -lc++ fonctionne également :

 gcc -lc++ main.cpp

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X