2013-02-23 3 views
-1

Я пытаюсь собрать некоторый очень простой C++ кода и каждый раз, когда я пытаюсь я получаю эту ошибку:Ошибки при связывании C++ программа

Undefined symbols for architecture x86_64: 
"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 ccdb9vrE.o 
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()", referenced from: 
    _main in ccdb9vrE.o 
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()", referenced from: 
    _main in ccdb9vrE.o 
"std::ios_base::Init::Init()", referenced from: 
    __static_initialization_and_destruction_0(int, int)in ccdb9vrE.o 
"std::ios_base::Init::~Init()", referenced from: 
    ___tcf_0 in ccdb9vrE.o 
"std::cin", referenced from: 
    _main in ccdb9vrE.o 
"std::cout", referenced from: 
    _main in ccdb9vrE.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 ccdb9vrE.o 
"std::terminate()", referenced from: 
    _main in ccdb9vrE.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 ccdb9vrE.o 
"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from: 
    _main in ccdb9vrE.o 
"std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)", referenced from: 
    _main in ccdb9vrE.o 
"___gxx_personality_v0", referenced from: 
    Dwarf Exception Unwind Info (__eh_frame) in ccdb9vrE.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 

Я использую эту команду для компиляции:

$ gcc script.cc 

И это код сценария:

#include <iostream> 
#include <string> 
using namespace std; 

int main() { 
     cout << "Please enter your name:\n"; 
    string name; 
    cin >> name; 
    cout << "Hello, " << name << endl; 

    return 0; 
} 

И у меня есть последний инструмент Dev загруженный. Если кто-то может помочь, это будет здорово.

+8

Используйте 'g ++', а не 'gcc'. –

+2

Addison: Неразумно указывать другим на собственную ошибку. Как правило, это не просто ошибка компилятора. Я отредактировал название соответственно. – 2013-02-23 00:39:36

+0

Возможный дубликат [Ошибка компиляции «Неопределенные символы» в osx] (http://stackoverflow.com/questions/6167040/compilation-error-undefined-symbols-on-osx) –

ответ

3

Использование г ++, так как его C++ файл не с файл ... он должен работать таким образом ...

3

gcc это имя для GNU C компилятором исполняемого; как таковой, он предназначен для компиляции и сборки кода C. Чтобы скомпилировать ваш код как C++, используйте g++ исполняемый файл.

gcc фактически скомпилирует код на C++ (на основе расширения файла), но не свяжет полученные двоичные файлы должным образом (из-за опущенного libstdc++).

3

В любом случае: ни один из ответов до сих пор не упоминал о фактической причине, почему связь не работает с GCC, но делает это с G ++. Проблема заключается не в этапе компиляции, а в связи. gcc по умолчанию не ссылается на стандартную библиотеку C++, g++.

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