你能帮我理解如何
__start
在 C 内部使用?
它是函数的精确副本main
还是编译程序的入口点?
只是想知道,它是如何使用的?
根据 C/C++ 标准,main()
是程序的起点。如果您使用 GCC,_start
函数是 C 程序的入口点,它调用main()
. 函数的主要工作_start()
是执行一些初始化任务。
// $ gcc program_entry.c -nostartfiles
// $ ./a.out
// custom program entry
#include <stdio.h>
#include <stdlib.h>
void program_entry(void);
void
_start(void)
{
program_entry();
}
void
program_entry(void)
{
printf("custom program entry\n");
exit(0);
}
如果需要,也可以-e
在 GCC 中使用 switch 编译程序入口。
// $ gcc program_entry.c -e __start
// $ ./a.out
// custom program entr
#include <stdio.h>
void program_entry(void);
void
_start(void)
{
program_entry();
}
void
program_entry(void)
{
printf("custom program entry\n");
}
_start 是一个操作系统函数......它是任何程序的入口点......因为我们的编译器知道 main(main 不是预定义函数,它是用户定义的,但所有编译器都知道它们)这个 _start 函数将调用main ,然后我们的程序进入 CPU