2016-03-09 1 views
2

Я написал всемирную программу приветствия на мой макинтош, но когда я скомпилировал, вывод компилятора об ошибке:Не удалось скомпилировать «привет мир» CPP в моей OSX

Undefined symbols for architecture x86_64: "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in endian0-654ab7.o "std::__1::ios_base::getloc() const", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in endian0-654ab7.o "std::__1::basic_string, std::__1::allocator >::__init(unsigned long, char)", referenced from: std::__1::ostreambuf_iterator > std::__1::__pad_and_output >(std::__1::ostreambuf_iterator >, char const*, char const*, char const*, std::__1::ios_base&, char) in endian0-654ab7.o "std::__1::basic_string, std::__1::allocator >::~basic_string()", referenced from: std::__1::ostreambuf_iterator > std::__1::__pad_and_output >(std::__1::ostreambuf_iterator >, char const*, char const*, char const*, std::__1::ios_base&, char) in endian0-654ab7.o "std::__1::basic_ostream >::sentry::sentry(std::__1::basic_ostream >&)", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in endian0-654ab7.o "std::__1::basic_ostream >::sentry::~sentry()", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in endian0-654ab7.o "std::__1::cout", referenced from: _main in endian0-654ab7.o "std::__1::ctype::id", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in endian0-654ab7.o "std::__1::locale::~locale()", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in endian0-654ab7.o "std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in endian0-654ab7.o "std::__1::ios_base::clear(unsigned int)", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in endian0-654ab7.o "std::terminate()", referenced from: ___clang_call_terminate in endian0-654ab7.o "___cxa_begin_catch", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in endian0-654ab7.o ___clang_call_terminate in endian0-654ab7.o "___cxa_end_catch", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in endian0-654ab7.o "___gxx_personality_v0", referenced from: std::__1::basic_ostream >& std::__1::__put_character_sequence >(std::__1::basic_ostream >&, char const*, unsigned long) in endian0-654ab7.o std::__1::ostreambuf_iterator > std::__1::__pad_and_output >(std::__1::ostreambuf_iterator >, char const*, char const*, char const*, std::__1::ios_base&, char) in endian0-654ab7.o Dwarf Exception Unwind Info (__eh_frame) in endian0-654ab7.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

Это программа:

#include <iostream> 
using namespace std; 

int main(int argc, char *argv[]) 
{ 
    cout<< "hello world"; 
    return 0; 
} 
+0

Как вы создаете свою программу? – Eiko

+0

Я использую 'gcc -o endian endian0.cpp', как я обычно использую в linux –

+0

Как и в случае с трояном ниже, попробуйте clang ++. – paxdiablo

ответ

2

Похоже, что вам не хватает (не удается связать) библиотеку времени выполнения C++. Пока вы не показываете командную строку, которую вы использовали для компиляции и связывания программы, это должно сделать это:

$ clang++ -o hello hello.cpp 
+1

Я использую команду 'gcc -o endian endian0.cpp', но почему компилятор не обнаруживает, что это файл C++? –

+1

@haolly Он делает; проблема в том, что, поскольку вы не использовали 'g ++', он не знает, чтобы включить библиотеку времени выполнения C++. – trojanfoe

+0

Мне кажется, что чтение 'g ++' было просто интерфейсом для 'clang ++' на Mac, так что это, вероятно, ответ. – paxdiablo

Смежные вопросы