crt0


crt0 (также известный как c0) — набор стартовых подпрограмм, принудительно линкованных в программу, написанной на Си. Crt0 выполняет инициализирующую работу, необходимую перед вызовом основной функции.

Crt0 обычно принимает форму объектного файла с именем crt0.o, часто написанного на языке ассемблера, который автоматически включается линковщиком в каждый скомпонованный им исполняемый файл[1].

crt0 содержит основные части библиотеки среды выполнения. Работа, которую он выполняет, зависит от компилятора, операционной системы и реализации стандартной библиотеки.[1] Кроме работы по инициализации, которая требуется средой и набором инструментов, crt0 может выполнять и дополнительные операции, определенные программистом, такие как исполнение глобальных конструкторов C++ и функций языка Си, имеющие аттрибут ((constructor)).

«crt» означает «время выполнения Си», а ноль подразумевает «самое начало». Однако, когда программы компилируются с помощью GCC, он также используется в отличных от Си языках. Альтернативные версии crt0 доступны для специальных сценариев использования; например, чтобы включить профилирование с помощью gprof, программы должны быть скомпилированы с gcrt0.[2]

Этот пример предназначен только для Linux x86-64 с синтаксисом AT&T без актуальной среды выполнения Си.