Да, вам действительно нужно все эти вещи.Это код запуска и разрыва для среды C, в которой выполняется ваш код.
Кроме нехостинговых сред, таких как низкоуровневые встроенные решения, вы найдете в значительной степени все В средах есть что-то подобное.Такие вещи, как /lib/crt0.o
в некоторых UNIX-подобных операционных системах или crt0.obj
в Windows.
Они имеют жизненно важное значение для успешного выполнения вашего кода.Вы можете свободно опускать библиотечные функции, которые вы не используете (printf
, abs
и т. Д.), Но необходим код запуска.
Некоторые вещейчто он может выполнить, это инициализация atexit
структур, разбор аргументов, инициализация структур для библиотеки времени выполнения C, инициализация предварительных основных значений C / C ++ и т. д.
Это сильно зависит от ОС и,если есть вещи, которые вы не хотите делать, вам, вероятно, придется получить исходный код и извлечь их, по сути, предоставив собственную сокращенную замену объектного файла.