‘std :: cout’에 대한 정의되지 않은 참조 to `std::ios_base::Init::~Init()’

이것이 예일까요?

#include <iostream>
using namespace std;
int main()
{
    cout << "Hola, moondo.\n";
}

오류가 발생합니다.

gcc -c main.cpp gcc -o edit main.o  main.o: In function `main':
main.cpp:(.text+0xa): undefined reference to `std::cout'
main.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char,std::char_traits<char> >& std::operator<< <std::char_traits<char>>(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
main.o: In function `__static_initialization_and_destruction_0(int,int)':
main.cpp:(.text+0x3d): undefined reference to `std::ios_base::Init::Init()'
main.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::~Init()' collect2: error: ld
returned 1 exit status make: *** [qs] Error 1

또한이 예는 다음과 같습니다.

#include <iostream>
int main()
{
    std::cout<<"Hola, moondo.\n";
}

오류가 발생합니다.

gcc -c main.cpp gcc -o edit main.o  main.o: In function `main':
main.cpp:(.text+0xa): undefined reference to `std::cout'
main.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char,std::char_traits<char> >& std::operator<<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char> >&, char const*)'
main.o: In function `__static_initialization_and_destruction_0(int,int)': main.cpp:(.text+0x3d): undefined reference to `std::ios_base::Init::Init()'
main.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::~Init()' collect2: error: ld
returned 1 exit status make: *** [qs] Error 1

참고 : Debian Wheezy를 사용하고 있습니다.



답변

다음을 사용하여 프로그램을 컴파일하십시오.

g++ -Wall -Wextra -Werror -c main.cpp -o main.o
     ^^^^^^^^^^^^^^^^^^^^ <- For listing all warnings when your code is compiled.

등의 cout필요가 C ++ 표준 라이브러리에 존재하는 명시 적 링크 와 함께 -lstdc++사용하는 경우를 gcc; g++기본적으로 표준 라이브러리를 연결합니다.

으로 gcc( g++보다 선호해야 함 gcc)

gcc main.cpp -lstdc++ -o main.o

답변

예, g++명령을 사용 하면 나를 위해 일했습니다.

g++ my_source_code.cpp

답변

메이크 파일

makefile로 작업하고 있고 나처럼 여기에 있다면, 이것은 아마도 당신이 찾고있는 것입니다.

메이크 파일을 사용하는 경우 cc아래와 같이 변경해야 합니다.

my_executable : main.o
    cc -o my_executable main.o

CC = g++

my_executable : main.o
    $(CC) -o my_executable main.o