C89에서 기본 컴파일 명령
$ gcc -std=c89 -W -Wall -pedantic-errors main.c -o main
-std=c89: c89표준(ANSI C)으로 컴파일 할 것
-W: -Wextra
-Wall에서 제공하지 않는 추가적인 경고를 활성화
- 최신 gcc에서는
-Wextra와 동일한 역할 한다.
-Wall: 보편적으로 유용한 모든 경고 메시지 활성화
- all이지만 실제로는 모든 경고를 다 켜는 것은 아니고, 혼란을 줄 수 있거나 버그 소지가 다분한 일반적인 경고를 모아서 보여줌
-pedantic-errors
- ISO C 표준을 엄격하게 준수하지 않는 코드에 대해 경고 대신 오류를 발생
-pedantic: 표준에 어긋나는 문법에 대해 경고
-pedantic-errors: 그 경고들을 모두 에러 처리
빌드 기본 이해
컴파일은 각각 소스가. 링킹은 한번에한다.
링크
- 링커가 담당
- 오브젝트 코드들을 입력으로 한다.
- 컴파일 때, 함수 선언만 가지고도 컴파일 된다.
- 우선 컴파일 시, 함수 부분은 구멍으로 둔다.
- 링크 단계에서 구멍을 메꾼다.
- 링킹 단계에서 에러가 난 경우,
- 함수 선언만 있고, (함수 선언이 없으면 아예 컴파일에서 에러니까), 함수 구현이 없는 것