[C++] Undefined Reference to "std::cout" 에러 해결

2017. 7. 10. 21:38공부 자료

[C++] Undefined Reference to "std::cout" 에러 해결


    C, Java, Python 같은 ( 상대적으로 ) 프로그래머가 코딩하기 편한 언어들에 비해 C++은 필자에겐 외계어같이 어려운 언어중 하나였다. 하지만 사용하려는 라이브러리나 여러 기술적인 여건들이 C++을 사용하지 않고 코딩하기 어렵게 만들었다. 따라서 C++을 열심히 공부하는중이다. ( 어렵진 않지만 생소하다 ㅠ )


    C++의 빠른 습득을 위해서 오목 게임을 만들어 보던 도중, 몇 가지 오류가 발생해서 오류 해결 방법을 공유하려고 글을 쓴다. 필자의 컴퓨터 환경은 Ubuntu 16.x Linux 환경에서 진행하였다.


먼저 


omok.cpp:(.text+0x1ac): undefined reference to 'std::cout'

omok.cpp:(.text+0x1bb): undefined reference to 'std::basic_ostream<char, ...'


과 같은 에러를 해결하는 방법을 알아보겠다.


[ 사진1 : 에러 코드 ]



사실 이는 알고나면 매우 허탈할정도로 쉬운 에러이다. #include<iostream> 을 해 주더라도 iostream 헤더 파일을 읽지 못한다면 생길 수 있는 에러이다. ( 이는 사실 에러 코드만 읽더라도 알 수 있는 문제이다. )


하지만 난 분명히 #include<iostream>도 해줬고, using namespace std; 도 해줬고, .cpp 파일로 만들어서 잘 컴파일 해 줬고, path 에도 문제가 없는 것 같은데!! 이런 생각에 도저히 문제가 생기지 않을 것 같은 곳에서 문제가 생겨서 화가 났었다.


간단하게 두 가지 방식으로 고칠 수 있다.


1. C 언어 컴파일러인 gcc 로 컴파일하게 되면 이러한 증상이 일어날 수 있다. 이는 gcc -o aa omok.cpp 을 입력하던 것을 g++ -o aa omok.cpp 로 C 언어 컴파일러가 아닌 C++ 컴파일러 g++로 바꾸는 것으로 간단하게 해결 가능하다.


2. stdc++을 gcc C 언어 컴파일러에 링크시켜준다. g++ aaa.cpp 은 gcc aaa.cpp -lstdc++과 동일하므로 gcc -o aa omok.cpp -lstdc++ 을 입력하여 진행 하면 된다.



생각보다 허탈하기도 했지만, 그래도 많은 시간 삽질을 한 것이 아니라 다행이라는 생각이 들긴 했다.


[ 참고 사이트 ]

- 참고사이트1

- 참고사이트2