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++ 을 입력하여 진행 하면 된다.
생각보다 허탈하기도 했지만, 그래도 많은 시간 삽질을 한 것이 아니라 다행이라는 생각이 들긴 했다.
[ 참고 사이트 ]
'공부 자료' 카테고리의 다른 글
[안드로이드] aar파일 등록하기. (0) | 2017.08.11 |
---|---|
[C++] 상속과 다형성 이용해 보기 (0) | 2017.07.11 |
[C++] Struct 와 Class 차이 살펴보기. (0) | 2017.07.11 |
[C++] hpp 파일 does not name a type (0) | 2017.07.10 |
빠르게 Git 사용 해 보기 with Gitkraken (9) | 2017.05.09 |