일반적인 C 프로그램의 개발 과정은 아래 그림의 순서로 볼 수 있다.
하나하나 짚어보자.

1. 소스 코드 작성
개발 환경에서 제공하는 소스 코드 편집기나 Eclipse 같은 텍스트 편집기를 이용하여 C 프로그램의 소스 코드를 작성한다.
C 프로그램의 소스 코드는 .c 확장자를 갖는 일종의 텍스트 파일이다.
2. 전처리기 (preprocessor)
전처리기는 프로그래머가 작성한 소스 파일을 컴파일 하기 위한 소스 파일로 변환하는 기능을 제공한다.
전처리기는 보통 다른 파일을 포함(include)하거나, 소스 파일 내의 특정 문자열을 다른 문자열로 대치(replace)하거나, 조건에 따라서 코드의 일부를 컴파일하도록 또는 하지 않도록 선택하는 기능을 제공한다.
전처리기 문장은 # 으로 시작하므로 쉽게 구별할 수 있다.
https://coddish.tistory.com/13
[C] C 전처리기 (preprocessor)
1. 정의 전처리기는 소스 파일을 실제 컴파일로 보내기 전에 처리하는 소프트웨어 프로그램이다.<p id="SE-df287b01-428a-4404-a58a-32ae58b0eb6c" style="background-color: #ffffff; color: #000000; text-align: left;" data-ke-si
coddish.tistory.com
3. 컴파일 (compile)
컴파일러(compiler)는 소스파일을 컴파일하면서 C언어의 문법에 맞지 않는 소스 코드에 대해 컴파일 에러를 발생시킨다.
컴파일 에러가 없으면 컴파일러는 오브젝트 파일을 생성한다.
하나의 프로그램에서 여러 개의 소스 파일을 사용하는 경우,
각각의 소스 파일을 개별적으로 컴파일하므로, 소스 파일마다 오브젝트 파일이 하나씩 생성된다.
4. 링크 (link)
링커(linker)는 컴파일 단계에서 생성된 오브젝트 파일들을 합쳐서 하나의 실행파일을 생성한다.
또한, 링커는 프로그램에서 사용된 라이브러리를 실행파일에 연결하기도 한다.
여러 오브젝트 파일을 하나로 합치고 라이브러리를 연결하면서 잘못된 부분이 있으면 링크 에러가 발생하는데, 링크 에러는 여러 소스 파일 사이의 상관관계를 함께 파악해야 하므로 컴파일 에러에 비해 찾기가 쉽지 않다. 컴파일 에러와 링크 에러를 합쳐서 문법적인 에러라고 하는데, 문법적인 에러가 발생하면 첫 번째 단계로 돌아가 소스 파일을 수정하는 작업부터 다시 수행한다.
5. 프로그램을 실행
문법적인 에러가 없으면 실행 파일이 만들어진다.
실행 파일을 실행해서 원하는 결과를 얻을 수 있는지 확인한다.
이때 프로그램이 잘못된 실행 결과를 생성하거나 실행 중에 프로그램이 죽는 문제가 발생할 수 있는데, 이를 실행 에러 라고 한다.
6. 디버깅 (debugging)
실행 에러를 찾기 위해서 디버깅 하는 단계이다.
실행 에러는 프로그램의 논리가 잘못되어 발생하는 에러로 디버깅 과정을 통해서 실행 에러가 발생한 곳을 찾을 수 있다. 디버깅을 할 때는 프로그램의 실행 흐름이 올바르게 진행되는지, 프로그램 내에서 사용된 수식의 값이 맞는지 등을 살펴보고 잘못된 부분을 찾아서 수정한 다음 다시 프로그램 개발 과정을 수행한다.
각 단계를 수행하는 전처리기, 컴파일러, 링커는 개별적인 프로그램이지만 우리가 사용하는 대부분의 C 컴파일러는 세 프로그램을 하나로 묶어서 순서대로 수행하므로 C 컴파일러 안에 전처리기, 컴파일러, 링커가 내장되어 있다고 생각해도 된다.
일반적으로 빌드(build) 를 수행하면 전처리기, 컴파일, 링크가 모두 수행된다.

'C' 카테고리의 다른 글
[C] C 전처리기 (preprocessor) (0) | 2024.04.30 |
---|---|
[C] C 언어의 역사, 특징 (0) | 2024.04.30 |