프로그램의 컴파일 및 실행 과정
프로그램이 컴파일되어 실행되는 과정은 다음 단계들로 구성된다:
- 소스 코드 작성: 개발자가 프로그램의 기능을 수행하기 위한 소스 코드를 작성한다.
- 컴파일: 컴파일러는 소스 코드를 기계어 코드로 변환하는 과정을 수행한다. 이 과정에는 구문 분석, 최적화 등 여러 단계가 포함된다.
- 링킹: 컴파일된 코드(오브젝트 파일)에 필요한 라이브러리나 다른 오브젝트 파일들을 결합하여 실행 가능한 파일을 만든다.
- 로딩: 로더는 디스크에 저장된 실행 파일을 메모리로 적재한다.
- 실행: 프로그램이 메모리에 적재되면, CPU는 실행 파일의 명령어를 수행한다.
링커와 로더의 차이
-
링커(Linker)
- 링커는 컴파일된 오브젝트 파일들을 결합하여 실행 가능한 프로그램을 만드는 역할을 한다.
- 정적 링킹은 실행 파일 생성 시 모든 필요한 코드와 라이브러리를 하나의 파일로 결합한다.
- 동적 링킹은 프로그램 실행 시 필요한 라이브러리를 연결한다.
-
로더(Loader)
- 로더는 실행 파일을 메모리로 적재하여 프로그램이 실행될 수 있게 하는 역할을 한다.
- 프로그램 실행을 위해 디스크에서 메모리로 코드를 로드하는 과정을 담당한다.
컴파일 언어와 인터프리터 언어의 차이
-
컴파일 언어
- 소스 코드 전체를 컴파일러를 통해 미리 기계어로 변환한 후 실행하는 언어다.
- 컴파일 과정을 거쳐 생성된 실행 파일로 인해 실행 속도가 빠르다.
- 예: C, C++
-
인터프리터 언어
- 소스 코드를 한 줄씩 읽어가며 즉시 실행하는 언어다.
- 별도의 컴파일 과정 없이 코드를 바로 실행할 수 있어 개발과 테스트가 유연하고 빠르다.
- 실행 속도는 컴파일 언어에 비해 느릴 수 있다.
- 예: Python, JavaScript