Crt0

crt0 (또는 c0)는 C로 작성된 프로그램의 메인 함수를 호출하기 전에 필요한 초기화를 수행하는 루틴(execution startup routines)의 집합으로 프로그램에 링크되어 있다. 이것은 보통 crt0.o라고 불리는 목적 파일 형태로, 흔히 어셈블리어로 작성되며, 빌드 시에 링커에 의해 자동으로 실행 파일에 포함된다.

crt0는 런타임 라이브러리의 가장 기본적인 부분을 포함한다. 정확히 하는 일은 프로그램의 컴파일러, 운영체제 그리고 C 표준 라이브러리의 구현에 달려 있다.  환경과 툴체인에 필요한 초기화 작업 외에도, crt0는 C++의 전역 생성자나 GCC의 ((constructor)) 속성을 포함하는 C 함수를 실행하는 것 같이 프로그래머에 의해 정의된 추가적인 작업을 할 수 있다.

"crt"는 "C runtime"을, 0은 "맨 처음"을 의미한다. 이러한 이름을 가졌지만, GCC로 컴파일된, C가 아닌 언어의 프로그램에도 사용된다. 특수한 경우에는 crt0를 대체하는 버전이 사용되기도 한다. 예를 들면 gprof 프로파일러를 컴파일하려면 gcrt0이 필요하다.

같이 보기 
 엔트리 포인트
 런타임 시스템

각주

외부 링크 
 crt0.o vs crt1.o
 Linux x86 program start-up
 Hello from a libc-free world!  (Part 1) , March 16, 2010
 Start Up Code란?

C 표준 라이브러리