在编写普通的c语言程序时,我们都会先写一个main函数,并认为main函数是所有程序的入口函数,其实main函数只是我们所编写的程序的入口函数,真正可执行文件的入口点并不是main函数,在执行main函数之前还有许多的初始化工作需要做,这些在main函数之前的工作是由标准 C 库完成的,然后再由标准 C 库调用main函数。
真正可执行文件的入口点可以通过查看链接脚本(在使用ld命令时加上-verbose参数)可以看出,真正的入口点是_start函数(或者是一个标号)。由上面的内容可以知道_start函数是 C 库中的内容。所以如果在编译时不链接标准库,会出现 找不到_start 的错误。