C++은
파일로 나뉘어 있고
라이브러리도
로 나뉘어 있다.
빌드 프로세스를 열어보면 assembler, compilation, linker라는 과정이 있다.
빌드 프로세스에서 처음으로 개입되는 것은 pre proccesor이다.
이는 #include, #define같은 것이다.
만약 main.cpp라는 파일이
#include cat.h
을 가진다면 pre-processor는 cat.h와 translation unit을 만든다
이후 compiler가 이를 obj파일로 바꾼다.
obj파일에는 machine code, data가 들어있다.
이후 Linker는 실행 가능한 파일로 만들어준다.
이 파일은 똑같이 machine code, data가 있고 추가로 실행파일이므로 실행을 위한 정보를 가지고 있다.
g++ test.cpp -o "output파일의 이름" 명령어를 사용하면 output파일을 만들어준다.
c++에는 실행과정에 일어날 수 있는 에러를 compilation과정 중에 에러로 알려주는 기능이 있다.
이 기능을 사용하려면 g++ test.cpp -Wall 명령어를 사용하면 된다.
비슷하게 g++ test.cpp -Werror를 사용하면 모든 경고들이 에러로 바뀌어 컴파일이 되지 않는다.
g++ test.cpp -std="버전"을 사용해 컴파일 버전을 선택하여 컴파일 할 수 있다.
디버그 정보를 넣고싶다면 g++ test.cpp -g를 사용하면 된다.
컴파일 과정을 자세히 보고싶다면 g++ test.cpp -v를 사용하면 된다.
컴파일시 명령어로 "march=cpu타입"을 적으면 아키텍처에 최적화된 바이너리코드를 생성한다.