*컴파일 과정

컴파일(compilation)은 프로그래밍 언어로 작성된 소스 코드를 컴퓨터가 실행 가능한 형태인 기계어로 변환하는 과정을 말한다.
인간이 이해할 수 있는 언어로 작성된 소스 코드(고수준 언어 : C, C++, Java 등)를 CPU가 이해할 수 있는 언어(저수준 언어 : 기계어)로 번역(변환)하는 작업이라는거다.
이 과정은 일반적으로 컴파일러라고 불리는 특수한 소프트웨어 프로그램을 사용하여 수행된다.
일반적인 컴파일 과정은 다음과 같은 단계로 이뤄지는데
1. 소스 코드 작성: 프로그래머가 선택한 프로그래밍 언어로 소스 코드를 작성한다. 이 소스 코드는 일련의 문장과 구조로 이루어져 있으며, 프로그램의 동작을 정의한다.
2. 전처리: 컴파일 과정이 시작되기 전에 전처리기(preprocessor)가 소스 코드를 처리한다. 전처리기는 소스 코드에서 주석 제거, 매크로 확장 등과 같은 전처리 지시문을 처리하는 역할을 수행한다.
3. 컴파일: 전처리된 소스 코드는 컴파일러에 의해 컴파일된다. 컴파일러는 소스 코드를 분석하고, 구문 오류나 의미적 오류 등을 검사한다. 그리고 중간 표현인 목적 코드(object code)를 생성한다. 목적 코드는 컴퓨터 아키텍처에 맞는 저수준의 기계어 형태다.
4. 어셈블리: 목적 코드는 어셈블러(assembler)에 의해 어셈블리어(assembly language)로 변환된다. 어셈블리어는 목적 코드를 사람이 이해하기 쉬운 기호로 표현한 것이다.
5. 링킹: 프로그램이 여러 개의 소스 파일로 구성되어 있다면, 링커(linker)가 이들을 하나의 실행 가능한 파일로 결합함다. 링커는 함수나 변수의 참조와 정의를 연결하여 실행 가능한 형태의 프로그램을 생성한다.
6. 실행: 최종적으로 생성된 실행 파일은 컴퓨터에서 실행된다. 프로그램은 운영 체제에 의해 로드되고, 컴퓨터의 중앙 처리 장치(CPU)에 의해 명령어가 하나씩 실행되며 원하는 작업을 수행한다.
'TIL(Today I Learned)' 카테고리의 다른 글
[20230615 TIL] 쿠키와 세션 (0) | 2023.06.15 |
---|---|
[TIL 20230614] JVM (0) | 2023.06.14 |
[TIL 20230613] 객체지향 언어 정의와 장단점 (0) | 2023.06.13 |
[TIL 20230608] JAVA 장단점 (0) | 2023.06.08 |
[TIL_20230531] WEB 서버 vs WAS vs DB서버 (0) | 2023.05.31 |