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; 
} 

그리고 나는 다운로드 최신 개발 도구를해야합니까. 누구라도 도움이된다면 도움이 될 것입니다. 그것은 그런 식으로 작동합니다 자사의 C++ 파일이 아닌 C 파일 ... 이후

+8

'gcc'가 아니라'g ++'를 사용하십시오. –

+2

Addison : 자신의 실수로 다른 사람을 가리키는 것이 현명하지 않습니다. 일반적으로 단순히 컴파일러 버그를 가정하지 않습니다. 그에 따라 제목을 편집했습니다. –

+0

[컴파일 오류 "정의되지 않은 기호"on osx] 중복 가능 (http://stackoverflow.com/questions/6167040/compilation-error-undefined-symbols-on-osx) –

답변

3

gcc는 GNU C 컴파일러 실행을위한 이름입니다 따라서 C 코드를 컴파일하고 빌드해야합니다. 코드를 C++로 컴파일하려면 g++ 실행 파일을 사용하십시오.

gcc은 실제로 파일 확장명을 기반으로 C++ 코드를 컴파일하지만 결과 바이너리는 제대로 연결하지 않습니다 (생략 된 libstdc++).

3

어쨌든 : 지금까지는 GCC에서 링키지가 작동하지 않는 실제 이유에 대해 언급 한 답변이 없지만 G ++에서는 그렇게합니다. 문제는 컴파일 단계가 아니라 연계 단계에 있습니다. gcc은 C++ 표준 라이브러리 (기본적으로 g++)와 연결되지 않습니다.