운영체제

C언어 컴파일 과정

iksadnorth 2023. 7. 23. 15:39

전처리
소스 코드의 주석 제거 및 헤더 파일 병합
전처리 된 소스 코드 파일(*.i)로 변환

컴파일
오류 처리, 코드 최적화 작업을 하고 어셈블리어(*.s)로 변환

어셈블러
어셈블리어를 목적 코드(Object Code)(*.o)로 변환.

링크
프로그램 내의 라이브러리 함수, 타 목적 코드 등과 결합해 실행 파일(*.exe, *.out) 생성.

정적 라이브러리 (*.a)
빌드 시, 직접 실행 파일에 포함되어 독립적인 실행 파일 생성.
생으로 포함되다 보니 해당 라이브러리를 사용하는 다른 실행 파일과 내용이 중복될 수 있어 파일의 크기가 증가.
실행 속도가 빠르지만 변화에 대처하기 어렵고 파일 크기가 크다.

동적 라이브러리 (*.so, *.dll)
런타임 시, 필요한 라이브러리를 로드해서 사용.
라이브러리의 코드가 별도의 공유 라이브러리 파일(*.dll, *.so 등)로 존재
실행 속도가 느리지만 변화에 대처할 수 있고 파일 크기가 작다.

'운영체제' 카테고리의 다른 글

IPC - Inter Process Communication  (0) 2023.07.23
은행원 알고리즘  (0) 2023.07.23
프로세스  (0) 2023.07.23
페이지 교체 알고리즘  (0) 2023.07.22
메모리 할당 방법  (0) 2023.07.22