이번에 c++ 과목 과제를 하면서
교수님이 알려주신대로 gcc 컴파일러를 통해
컴파일을 하는데 자꾸
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
이 에러가 뜨는 것이었다
열심히 구글링을 해보니
main함수가 있는 c++ 파일에
다른 여러 c++ 파일들을 include 해줬는데
이게 뭐 자체적으로 link가 되지않아 생기는 에러인 듯 했다
해결법은 초특급 간단하다
당연하겠지만 헤더에
#include를 이용해서 가져올 다른 cpp파일을 입력해줘야한다
그리고 저 cpp파일들은 같은 폴더 안에 있어야한다
그런 다음
기존에 gcc 컴파일러로 컴파일하기 위해서는
gcc main.cpp -o main
단순하게 이렇게만 입력해줬지만
gcc main.cpp -o main -lstdc++
뒤에 -lstdc++를 붙여주면 끝이다
저 -lstdc++가 무엇인가하면
gcc 컴파일러에게 c++ 표준 라이브러리(libstdc++)를
링크하도록 지시하는 옵션이다
c++ 표준 라이브러리인 std를
링크시켜주는 옵션이라고하는데..
이유는 모르겠지만 단일 파일로 컴파일하면
std를 쓰든 말든 -lstdc++를 붙여주지않아도 되는데
여러 개의 cpp 파일을 사용하는 경우에는
-lstdc++를 붙여주지않으면 컴파일 에러가 떴다
g++로하면 입력해줄 필요 없다고는 하는데
난 g++로 해도 똑같은 에러가 뜨던데
그냥 잘 모르겠다 ㅎ
아무튼 위와같은 방법으로
컴파일은 잘 되었고
과제도 깔쌈하게 해결했다