[C] compile

컴파일 과정

1. 전처리

  • if, #define, #include 를 처리

  • .c -> .i

2. 컴파일

  • .i->.s

3. 어셈블

  • .s->.o
  • 오브젝트 파일(기계어 파일) 생성

4. 링킹

  • .o->.out
  • 라이브러리 함수와 오브젝트를 연결

4.1 동적 라이브러리

  • 컴파일 시 라이브러리를 포함하지 않음
  • 실행시 라이브러리를 로드해 메모리에 띄어두기에 다른 실행파일이 같은 라이브러리 사용시 메모리 이점이 있음
  • 실행시 환경에 해당 라이브러리가 없다면 오류 발생

4.2 정적 라이브러리

  • 컴파일시 라이브러리를 포함해 실행파일 생성

  • 파일의 크기가 커짐

  • 실행시 환경에 해당 라이브러리가 없어도 실행 가능
Author: Song Hayoung
Link: https://songhayoung.github.io/2020/08/04/Languages/C/compile/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.