2012-04-14 11 views
9

Así que estoy tratando de conseguir el clang compilador para trabajar .. mi primera opción natural del programa fue el siguiente código extremadamente complejo:sonido metálico iostream - símbolo no encontró

#include <iostream> 
using std::cout; using std::endl; 
/* hello world.cpp */ 
int main() 
{ 
    cout << "Hello, world!" << endl; 
    return 0; 
} 

En la línea de comandos que hice: clang helloworld.cpp y obtengo el siguiente buen error:

Undefined symbols for architecture x86_64: 
    "std::ios_base::Init::~Init()", referenced from: 
     ___cxx_global_var_init in cc-4iziZq.o 
    "std::ios_base::Init::Init()", referenced from: 
     ___cxx_global_var_init in cc-4iziZq.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 cc-4iziZq.o 
    "std::cout", referenced from: 
     _main in cc-4iziZq.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 cc-4iziZq.o 
    "std::ostream::operator<<(std::ostream& (*)(std::ostream&))", referenced from: 
     _main in cc-4iziZq.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

¿Qué pasa? Gracias! -kstruct

Respuesta

18

clang es un compilador de C. Debe usar clang++ o usar la bandera -x c++.

+0

Es evidente que no estoy completamente despierto. -_- ¡Gracias! – adelbertc

3

clang is a C compiler. You need to use clang++ or use the -x c++ flag.

todavía necesitan añadir -lstdC++.

Me di cuenta de esto por -v opción. Y me encontré con el diffrence es:

sonido metálico ++

-lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc

sonido metálico

-lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed

Cuestiones relacionadas