Я хотел бы собирать здесь, что происходит, когда вы запускаете исполняемый файл в Windows, Linux и OSX. В частности, я хотел бы точно понять порядок операций: я предполагаю, что исполняемый формат файла (PE, ELF или Mach-O) загружается ядром (но я игнорирую различные разделы ELF (Исполняемый и связанный формат) и их значение), а затем у вас есть динамический компоновщик, который разрешает ссылки, затем выполняется __init
часть исполняемого файла, затем основной, затем __fini
, а затем программа завершена, но я уверен, что она очень грубая и, вероятно, неправильная.
Изменить: вопрос теперь - CW. Я заполняюсь для Linux. Если кто-то захочет сделать то же самое для Win и OSX, это будет здорово.