Build process, 컴파일 옵션

김대익·2022년 2월 21일
0

C++은

  • header
  • cpp

파일로 나뉘어 있고

라이브러리도

  • static
  • dynamic
  • header-only

로 나뉘어 있다.

빌드 프로세스를 열어보면 assembler, compilation, linker라는 과정이 있다.


build proccess

빌드 프로세스에서 처음으로 개입되는 것은 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타입"을 적으면 아키텍처에 최적화된 바이너리코드를 생성한다.

0개의 댓글