프로그래밍
- 목적에 맞는 알고리즘으로부터 프로그래밍 언어를 사용하여 구체적인 프로그램을 작성하는 과정을 의미
- 작성된 소스 파일은 먼저 실행파일로 변환되어야 실행 할 수 있다.
소스파일에서 실행 파일을 생성하는 순서
- 소스 파일(source file)의 작성
- 선행처리기(preprocessor)에 의한 선행처리
- 컴파일러(compiler)에 의한 컴파일
- 링커(linker)에 의한 링크
- 실행 파일(executable file)의 생성
소스 파일(source file)의 작성
- 프로그래밍에서 가장 먼저 해야 할 작업은 바로 프로그램을 작성하는 것입니다.
- 다양한 에디터를 사용하여 C++ 문법에 맞게 논리적으로 작성된 프로그램을 원시 파일 또는 소스 파일이라고 합니다.
- C++을 통해 작성된 소스 파일의 확장자는 대부분 .cpp 가 됩니다.
선행처리기(preprocessor)에 의한 선행처리
- 선행처리(preprocess)란 소스 파일 중에서도 선행처리 문자(#)로 시작하는 선행처리 지시문의 처리 작업을 의미합니다.
- 이러한 선행처리 작업은 선행처리기(preprocessor)에 의해 처리됩니다.
- 선행처리기는 코드를 생성하는 것이 아닌, 컴파일하기 전 컴파일러가 작업하기 좋도록 소스를 재구성해주는 역할만을 합니다.
컴파일러(compiler)에 의한 컴파일
- 컴퓨터는 0과 1로 이루어진 이진수로 작성된 기계어만을 이해할 수 있습니다.
- 소스 파일은 개발자에 의해 C++ 언어로 작성되기 때문에 컴퓨터가 그것을 바로 이해할 수는 없습니다.
- 따라서 소스 파일을 컴퓨터가 알아볼 수 있는 기계어로 변환시켜야 하는데, 그 작업을 컴파일(compile)이라고 합니다.
- 컴파일은 C/C++컴파일러에 의해 수행되며, 컴파일이 끝나 기계어로 변환된 파일을 오브젝트 파일(object file)이라고 합니다.
- 이러한 오브젝트 파일의 확장자는 .o 나 .obj 가 됩니다.
링커(linker)에 의한 링크
- 컴파일러에 의해 생성된 오브젝트 파일은 운영체제와의 인터페이스를 담당하는 시동 코드(start-up code)를 가지고 있지 않습니다.
- 또한, 대부분의 C++ 프로그램에서 사용하는 표준 라이브러리 파일도 가지고 있지 않습니다.
- 하나 이상의 오브젝트 파일과 라이브러리 파일, 시동 코드 등을 합쳐 하나의 파일로 만드는 작업을 링크(link)라고 합니다.
- 링크는 링커(linker)에 의해 수행되며, 링크가 끝나면 하나의 새로운 실행 파일이나 라이브러리 파일이 생성됩니다.
- 이처럼 여러 개의 소스 파일을 작성하여 최종적으로 링크를 통해 하나의 실행 파일로 만드는 것을 분할 컴파일이라고 합니다.
실행 파일(executable file)의 생성
- 소스 파일은 선행처리기, 컴파일러 그리고 링커에 의해 위와 같은 과정을 거쳐 실행 파일로 변환됩니다.
- 최근 사용되는 개발 툴은 대부분 위에서 소개한 선행처리기, 컴파일러, 링커를 모두 내장하고 있으므로 소스 파일에서 한 번에 실행 파일을 생성할 수 있습니다.
- 이렇게 생성된 실행 파일의 확장자는 .exe 가 됩니다.
'프로그래밍 > C' 카테고리의 다른 글
메모리 저장 구조 및 영역 (코드, 데이터, 힙, 스택) (0) | 2019.05.01 |
---|---|
정적 바인딩(Static binding). 동적 바인딩(Dynamic binding) (2) | 2019.05.01 |
메모리 단편화 (페이징,세그멘테이션,메모리풀) (0) | 2019.04.30 |
malloc() [C]과 new [C++] (0) | 2019.04.29 |
데이터형 크기 (0) | 2019.04.29 |