Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C/C++에서 컴파일/링크 프로세스는 어떻게 작동합니까?

<시간/>

C++ 프로그램의 컴파일은 세 단계로 구성됩니다 -

  • 전처리 − 간단히 말해서 C 전처리기는 텍스트 대체 도구이며 실제 컴파일 전에 필요한 전처리를 수행하도록 컴파일러에 지시합니다. #include, #define 등과 같은 전처리 지시문을 처리합니다.
  • 편집 − 컴파일은 전처리된 파일에서 발생합니다. 컴파일러는 순수한 C++ 소스 코드를 구문 분석하고 어셈블리 코드로 변환합니다. 이는 어셈블리 코드를 기계어 코드(바이너리)로 변환하는 어셈블러를 Object 파일로 차례로 호출합니다. 이러한 개체 파일은 정의되지 않은 기호를 참조할 수 있습니다. 소스 코드가 제대로 구성되지 않은 경우 컴파일러는 오류를 제공하지 않습니다. 구문 오류, 과부하 해결 실패 오류 등이 이 단계에서 발생합니다. 또한 이러한 개체 파일을 정적 라이브러리로 사용할 수도 있습니다.
  • 연결 - 링커는 컴파일러가 생성한 개체 파일에서 최종 컴파일 출력을 생성합니다. 이 출력은 공유(또는 동적) 라이브러리 또는 실행 파일일 수 있습니다. 정의되지 않은 참조를 올바른 주소로 대체하여 개체 파일을 연결합니다. 이러한 기호는 다른 개체 파일이나 라이브러리에 정의되어야 합니다. 표준 라이브러리가 아닌 다른 라이브러리에 정의되어 있는 경우 이를 찾고 링크할 수 있도록 명시적으로 컴파일러에 인수로 전달해야 합니다.