Linux 下 C 程序的入口点

Linux下C程序的入口点并非main函数,而是在main之前由系统提供的入口函数,通常称为_entry点。这个函数负责初始化运行环境,包括堆、I/O、线程等,然后调用main。在静态链接时,入口函数为_start,位于glibc的csu子目录。用户可以通过链接器参数自定义入口点。
摘要由CSDN通过智能技术生成

      很多初学者认为,Linux 下C 程序的入口点是main函数,原因是因为他知道在他所写的代码中,main

函数是第一个被调用的。但事实并非如此。操作系统把程序装载到内存中后,在调用你所写的main函数前,

还调用了其它的代码。这些代码并不是用户所写的源码,而是由系统提供的。这些代码的功能是负责准备

main函数执行所需要的运行环境。当运行环境初始化完毕后,操作系统才开始调用用户程序中的main函数。

     负责提供初始化main函数执行环境的函数一般被称为入口函数或入口点(Entry Point),入口函数本质上

是用户程序的初始化和结束部分的逻辑延伸。因为每一个用户程序都需要这个功能,所以这些代码就被提炼

了出来,由系统提供,并且存放的程序的运行库中。

     在考虑到系统提供的入口函数的前提下,一个程序的运行步骤大致如下:

1)操作系统在创建进程后,把控制权移交到了程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值