每个程序内部都有一个main.c
。在主函数内部,有一个main
在任何其他函数之前调用的函数。我记得在编译器内部,还有一个指令,它调用在 之前 main
定义的函数。
__attribute__ ((constructor))
大多数程序都是这样工作的。我确信 Linux 内核的情况有所不同。查看文件后main.c
,init/kernel
似乎没有函数main
。
函数通过指令声明__init
。参见以下示例:
asmlinkage __visible __init __no_sanitize_address __noreturn __no_stack_protector
void start_kernel(void)
main.c
Linux 的启动过程中代码的调用顺序是怎样的?