1. CS - 컴퓨터 구조(6)

  1. C언어의 컴파일 과정
    1. 전처리기(Preprocessor)
      1. 본격적으로 컴파일하기 전에 처리할 작업들을 말함
      2. 외부에 선언된 다양한 소스코드, 라이브러리를 포함함(e.g. #include)
      3. 프로그래밍의 편의를 위해 작성된 매크로 변환(e.g. #define)
      4. 컴파일할 영역 명시함(e.g. #if, #ifdef, …)
    2. 컴파일러(Compiler)
      1. 전처리가 완료 되어도 여전히 소스코드가 있음
      2. 전처리 완료된 소스코드를 저급언어(어셈블리어 언어)로 변환함
    3. 어셈블러(Assembler)
      1. 어셈블리어를 기계어로 변환된다는 의미
      2. 목적 코드(Object File)를 포함하는 목적 파일이 된다는 의미
        1. 목적파일?
          1. 기계어로 이루어진 파일임
          2. 링킹((Linking))을 거치는 것을 말함
        2. 실행파일?
          1. 기계어로 이루어진 파일임
          2. 목적파일이 **링킹(Linking)**을 거친 이후에 실행되는 파일을 말함
            1. 링킹(Linking)
              1. 여러개의 코드데이터를 모아서 연결하는 것을 말함
              2. 컴파일 이후, 실행하기 이전에 작성한 프로그램이 사용하는 다른 프로그램이나 라이브러리를 가져와 연결하는 과정을 말함
    4. 링커(Linker)
      1. 링킹을 담당하믄 프로그램을 말하며, 독립적인 컴파일을 가능하게 하는 아주 중요한 역할을 담당함
      2. 모듈 중 한 개를 변경한다고 가정하면, 다른 파일들을 재컴파일할 필요 없이 이 파일만을 간단히 재컴파일하고 다시 링크하여 변경사항을 적용함을 말함