Crt0
crt0
(또는 c0
)는 C로 작성된 프로그램의 메인 함수를 호출하기 전에 필요한 초기화를 수행하는 루틴(execution startup routines)의 집합으로 프로그램에 링크되어 있다. 이것은 보통 crt0.o
라고 불리는 목적 파일 형태로, 흔히 어셈블리어로 작성되며, 빌드 시에 링커에 의해 자동으로 실행 파일에 포함된다.[1]
crt0
는 런타임 라이브러리의 가장 기본적인 부분을 포함한다. 정확히 하는 일은 프로그램의 컴파일러, 운영체제 그리고 C 표준 라이브러리의 구현에 달려 있다.[1] 환경과 툴체인에 필요한 초기화 작업 외에도, crt0는 C++의 전역 생성자나 GCC의 ((constructor)) 속성을 포함하는 C 함수를 실행하는 것 같이 프로그래머에 의해 정의된 추가적인 작업을 할 수 있다.[2][3]
"crt"는 "C runtime"을, 0은 "맨 처음"을 의미한다. 이러한 이름을 가졌지만, GCC로 컴파일된, C가 아닌 언어의 프로그램에도 사용된다. 특수한 경우에는 crt0를 대체하는 버전이 사용되기도 한다. 예를 들면 gprof 프로파일러를 컴파일하려면 gcrt0이 필요하다.[4]
같이 보기
각주
- ↑ 가 나 “The C Runtime Initialization, crt0.o”. 《embecosm.com》. 2010. 2016년 2월 10일에 확인함.
- ↑ “Program initialization: Creating a C library”. 《osdev.org》. 2014년 2월 25일. 2016년 2월 10일에 확인함.
- ↑ “Calling Global Constructors”. 《osdev.org》. 2014년 4월 8일. 2016년 2월 10일에 확인함.
- ↑ “Compiling a Program for Profiling: GNU gprof”. 《sourceware.org》. 2016년 2월 10일에 확인함.