객체 파일이란 무엇입니까?

객체 파일은 컴파일러라는 프로그램에 의해 생성 된 컴퓨터 파일이며 명령과 함께 데이터를 포함합니다. 컴파일러는 프로그래밍 언어 소스 코드를 객체 코드라고하는 중간 기계 판독 가능 형식으로 변환합니다. 작은 프로그램은 단일 객체 파일로 컴파일 될 수있는 반면, 큰 프로그램은 일반적으로 관련 기능의 여러 파일로 컴파일됩니다. 이러한 개별 개체 파일은 링커에 의해 연결되고 운영 체제 별 정보가 추가되어 실행 프로그램을 구성합니다.

일반적으로 객체 파일은 ".obj"파일 확장자로 표시됩니다. 그러나 이러한 파일에는 여러 가지 형식이 있습니다. 가장 일반적인 것은 Intel® Relocatable Object Module Format (OMF) 및 Windows® 및 UNIX® System V의 COFF (Common Object File Format)입니다. 많은 INIX® 시스템에서 ELF (Executable and Linkable Format)는 COFF를 교체하십시오.

형식에 관계없이 오브젝트 파일에는 일반적으로 다른 프로그램 모듈과 상호 작용할 수있는 세 가지 유형 정보가 포함됩니다. 외부 참조에 열려있는 프로 시저 및 데이터에는 다른 모듈에서 호출 할 수있는 이름이 지정됩니다. 마찬가지로, 모듈 외부의 정보에 대한 참조는 언급되었지만 이름은 지정되지 않았습니다. 파일이 링크되면 이름이 지정되지 않은 참조에 원래 정의 된 모듈에서 이름이 지정됩니다. 로컬 이름은 모듈 내에서만 참조되는 명령 및 데이터에 사용됩니다.

링크 가능한 모든 코드가 객체 파일로 저장되는 것은 아닙니다. 라이브러리는 객체 코드로 저장되는 사전 컴파일 된 루틴의 모음입니다. 객체 파일과 거의 같은 방식으로 생성되며 자주 호출되는 프로 시저를 저장하는 데 유용합니다. 링커가 다른 객체 파일 내에서 참조를 찾지 못하면 라이브러리 파일에서 자동으로 검색합니다. 프로그래밍 언어의 대부분의 구현에는 표준 함수 라이브러리가 제공됩니다.

동적 연결을 통해 여러 실행 프로그램에서 동시에 객체 파일을 사용할 수 있습니다. 링크 될 때 프로그램에 오브젝트 코드를 바인딩하는 대신 프로그램이로드 될 때 또는 프로 시저가 참조 될 때 런타임에 검색됩니다. Windows® 환경에서는 이러한 파일을 동적 링크 라이브러리라고하며 ".dll"확장자로 표시됩니다. Unix®와 유사한 시스템은 종종 이러한 유형의 파일을 동적 공유 객체 (DSO)라고합니다. 이 유형의 오브젝트 파일은 특정 프로그램과 함께 사용하기 위해 구현 될 수도 있으며 해당 프로그램 설치의 일부입니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?