C 프로그램 컴파일 과정
3319 단어 computersciencelinuxccpp
C 프로그램 컴파일 파이프라인
일반적으로 C 프로그램 컴파일 프로세스 파일은 몇 초가 걸리지만 이 짧은 시간 동안 c 소스 코드가 파이프라인에 들어가고 많은 개별 구성 요소가 작업을 수행합니다.
계속 진행하기 전에 알아야 할 두 가지 규칙이 있습니다.
C 프로그램 컴파일 규칙
*소스 파일만 컴파일됩니다.
*각 파일은 별도로 컴파일됩니다.
C 프로그램 컴파일 파이프라인의 구성 요소는 다음과 같습니다.
1. 전처리기
2.편집
3.조립
4. 링커
컴파일 파이프라인의 각 구성 요소는 이전 구성 요소의 특정 입력을 받아들이고 C 프로그램 컴파일 파이프라인의 다음 구성 요소에 대한 특정 출력을 생성합니다.
이 프로세스는 컴파일 파이프라인의 마지막 구성 요소가 필요한 출력 파일, 즉 바이너리 파일을 생성할 때까지 계속됩니다.
컴파일 파이프라인에 대해 알아야 할 한 가지는 소스 파일이 모든 컴파일 파이프라인 구성 요소를 성공적으로 통과하는 경우에만 출력을 생성한다는 것입니다. 구성 요소 중 하나의 작은 오류라도 컴파일 또는 연결 오류로 이어질 수 있으며 오류 메시지가 표시됩니다.
1단계 – 전처리
C 프로그램 컴파일 파이프라인의 첫 번째 단계는 전처리입니다. 소스 파일은 여러 헤더 파일로 구성되며 이러한 파일은 컴파일이 시작되기 전에 전처리기에 의해 C 코드의 본문에 포함됩니다.
이 전처리된 코드를 번역 단위(Compilation Unit)라고 합니다. 번역 단위는 전처리기에 의해 생성된 C 코드의 단일 논리 단위이며 컴파일러에 제공할 준비가 되어 있습니다.
이론은 충분합니다. 실제 살펴보겠습니다.
GCC에서 전처리된 코드 추출
또한 컴파일 파이프라인의 모든 구성 요소에서 얻은 파일을 살펴볼 수도 있습니다. C 컴파일러에게 번역 단위를 더 이상 컴파일하지 않고 덤프하도록 요청합시다.
gcc의 경우 -E(대소문자 구분) 옵션을 사용하여 소스 코드의 번역 단위를 덤프합니다.
C 코드
// Header File
#include <stdio.h>
#define Max 10
int main()
{
printf("Hello World"); // Print Hello World
printf("%d", Max);
return 0;
}
덤프 번역 단위
$ gcc -E cprogram.c
# 1 "cprogram.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "cprogram.c"
.......
.......
.......
typedef __time64_t time_t;
# 435 "C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h" 3
typedef struct localeinfo_struct {
pthreadlocinfo locinfo;
pthreadmbcinfo mbcinfo;
} _locale_tstruct,*_locale_t;
typedef struct tagLC_ID {
unsigned short wLanguage;
unsigned short wCountry;
unsigned short wCodePage;
} LC_ID,*LPLC_ID;
.......
.......
.......
# 1582 "C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h" 2 3
# 3 "cprogram.c" 2
# 5 "cprogram.c"
int main()
{
printf("Hello World");
printf("%d", 10);
return 0;
}
번역 단위 코드에서 얻을 수 있는 내용:
*모든 선언은 헤더 파일에서 번역 단위로 복사됩니다.
*댓글은 삭제됩니다
*매크로 값은 번역 단위의 해당 위치에 복사됩니다.
위의 번역 코드는 stdio.h 헤더 파일(총 1038줄의 번역 단위)을 포함하기 때문에 용량이 매우 크므로 전체가 아닙니다. 전체 출력을 보려면 개발 머신에서 이 명령을 실행하십시오.
이 예는 전처리기가 어떻게 작동하는지 보여줍니다. 전처리기는 파일에서 내용을 복사하거나 텍스트 대체에 의한 매크로 확장을 통해 포함과 같은 간단한 작업만 수행합니다.
전처리기는 C 구문과 규칙을 모르고 입력 코드에서 지시문을 찾는 파서를 사용합니다.
cpp라는 도구가 있는데 C Pre-Processor는 C 파일을 전처리하는 데 사용됩니다. 이 도구는 UNIX의 각 버전과 함께 제공되는 C 개발 번들의 일부입니다.
$ cpp cprogram.c
이 코드는 c 프로그램의 전처리된 코드를 제공합니다.
전처리된 파일의 확장자는 .i이며 이 파일을 C 컴파일러에 전달하면 전처리기 단계를 건너뜁니다. 이것은 확장자가 .i인 파일이 이미 사전 처리되어 컴파일 단계로 직접 전송되기 때문에 발생합니다.
C Program Compilation에 대해 자세히 알아보십시오.
Reference
이 문제에 관하여(C 프로그램 컴파일 과정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/divshekhar/c-program-compilation-process-5g3o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)