2024/10/11 2

[크래프톤 정글] 재배치 가능 목적 파일(CSAP 7.4장)

7.4 재배치 가능 오브젝트 파일 (Relocatable Object Files)재배치 가능 오브젝트 파일은 컴파일된 프로그램의 기본 단위로, 여러 소스 파일에서 생성된 오브젝트 파일들을 링크하여 하나의 실행 파일을 만들기 위해 사용된다. 각 오브젝트 파일은 기계어 코드와 데이터, 메타데이터(심볼 테이블)를 포함하고 있으며, 이 파일들은 링킹 과정에서 결합되어 최종 실행 파일을 생성한다. 이 재배치 가능 오브젝트 파일의 주요 기능은 프로그램을 재배치할 수 있도록 설계되어 있다는 것이다.재배치 가능 오브젝트 파일의 각 섹션은 실행 시점에 특정 메모리 주소에 고정되지 않으며, 링커에 의해 실제 실행 시 필요한 주소로 "재배치"될 수 있다. 이를 통해 여러 모듈(소스 파일)을 독립적으로 컴파일하고, 링커가 나..

[크래프톤 정글] 컴파일러 와 링커(CSAP 7.1장)*

컴파일러 드라이버는 여러 단계를 통해 소스 코드를 실행 파일로 변환하는데,각 단계는 서로 밀접하게 연결되어 있으며, 이 과정에서 각각의 파일이 중간 산출물로 생성된다.1. 전처리 단계 (Preprocessing)전처리 단계에서는 전처리기(cpp)가 동작하여 소스 파일의 전처리 지시문을 처리한다. 이는 컴파일 프로세스의 첫 단계로, #include, #define, #if, #ifdef와 같은 전처리 지시문을 해결한다.주요 작업:헤더 파일 확장: #include 지시문에 의해 포함된 헤더 파일들은 소스 파일에 삽입된다. 예를 들어, #include 는 해당 헤더 파일의 전체 내용을 소스 코드에 삽입하는 과정이다.매크로 확장: #define으로 정의된 매크로들은 실제 코드에서 사용될 때 해당 값으로 대체된다..