본문 바로가기
프로그래밍 언어/C

[C] 컴파일 과정

by nahkim 2023. 5. 20.

전처리 - 컴파일 - 어셈블 - 링크

 

전처리

소스 코드의 주석을 제거하고 #include 등 헤더 파일을 병합하여 매크로를 치환

 

include파일과 매크로는 어디서 실행되는가?

전처리기 preprocessor에서 처리한다

 

include 파일

매크로(macro)

컴파일러

오류 처리, 코드 최적화 작업을 하며 어셈블리어로 변환

 

어셈블러

목적 코드(Object code) 로 변환

리눅스의 경우 .o 파일 

ex) test.c -> test.o

 

링커

프로그램 내에 있는 라이브러리 함수 또는 다른 파일들과 목적 코드를 결합하여 실행 파일을 만듬

실행 파일 확장자 : .exe, .out

.exe 파일은 윈도우에서 만들어지고 .out 파일은 맥에서 만들어짐

 

 

정적 라이브러리와 동적 라이브러리

  • 라이브러리
    • 정적 라이브러리
    • 동적 라이브러리

 

정적 라이브러리

  • 프로그램 빌드 시 라이브러리가 제공하는 모든 코드를 실행 파일에 넣은 방식

장점

시스템 환경 등 외부 의존도가 낮다.

 

단점

코드 중복 등 메모리 효율성이 떨어진다.

 

 

동적 라이브러리

  • 프로그램 실행 시 필요할 때만 DLL이라는 함수 정보를 통해 참조하는 방식

DLL (Dynamic Link Library) 이란?

동적 링크 라이브러리의 약자이며, 링크 시에 실행 파일에 결합되는 것이 아니라 프로그램 실행시 프로그램 메모리 공간으로 읽어온다.

 

장점

메모리 효율성이 높다

 

단점

외부 의존도가 높다.

'프로그래밍 언어 > C' 카테고리의 다른 글

[C] 매크로(macro)  (0) 2023.05.18
[C 언어] 전처리기  (0) 2023.05.18