что является родительским вызывающим абонентом main?
В linux main
вызывается __libc_start_main
, в терминах вызывается _start
, в windows I Я не очень уверен, но есть также _start
.
На самом деле, хитрый трюк состоит в том, чтобы запустить программу C без main
:
#include <stdio.h>
#include <stdlib.h>
void _start()
{
printf("No main function!\n");
exit(0);
}
скомпилировать с:
gcc main.c -nostartfiles
Для Windows (10, г cc 8.1.0) и Ubuntu (18.04, г cc 9.2.0)
clang -Wl,-e,-Wl,__start main.c
Для MacOS (10.14 .6, Xcode 11.3)
Вот статья, в которой говорится о Linux x86 запуске программы