美文网首页我用 Linux技术文
main函数执行前,发生了什么。

main函数执行前,发生了什么。

作者: Trevor | 来源:发表于2017-04-26 23:48 被阅读84次
  1. elf格式的可执行文件会查找elf头的e_entry条目,这个条目中保存了程序入口函数的地址,也就是_start函数的地址。
    _start函数会把参数准备好,然后调用__libc_start_main函数,这个函数的原型如下:
    int __libc_start_main(int (*main) (int, char * *, char * *), /* address of main function */
                                       int argc, /* number of command line args */
                                       char * * ubp_av, /* command line arg array */
                                       void (*init) (void), /* address of init function */
                                       void (*fini) (void), /* address of fini function */
                                       void (*rtld_fini) (void), /* address of dynamic linker fini function */
                                       void (* stack_end) /* end of the stack address */
);

__libc_start_main函数会启动程序线程用来执行main函数。在这之前会先调用_init函数进行一些环境初始化,_init函数可以自定义,具体查看gcc手册。_fini和rtld_fini函数注册在函数退出时执行。

相关文章

  • iOS App启动优化思路

    用户能感知到的启动时长主要是在“main函数执行前”、“main函数执行后到首屏渲染完成”的阶段。 main函数执...

  • main函数执行前,发生了什么。

    elf格式的可执行文件会查找elf头的e_entry条目,这个条目中保存了程序入口函数的地址,也就是_start函...

  • 启动优化

    启动优化 App启动主要包括三个阶段: main函数执行前 main函数执行后 首屏渲染完成后 main函数执行前...

  • iOS - 优化App冷启动速度

    1. App的启动分为三个主要阶段: main()函数执行前 main()函数执行后(从main函数执行,到设置s...

  • App启动速度优化.----<iOS开发高手课>笔记

    App的启动主要包括三个阶段: main()函数执行前; main()函数执行后; 首屏渲染完成后. main()...

  • 点击app的icon之后发生了什么

    app的启动分为pre-main()和main()两个阶段,本篇文章主要介绍main()函数发生了什么。 main...

  • C语言深度总结[全面认识main函数之前运行代码]

    一、main运行前可运行哪些代码 (1)全局对象的构造函数会在main 函数之前执行。 (2)一些全局变量、对...

  • main 函数之前发生了什么

    一个 iOS App 的main函数位于 main.m 中,这是我们熟知的程序入口。但对 objc 了解更多之后发...

  • iOS 程序启动过程

    概述 我们一般说的 APP 的启动是从 main 函数开始的,但在 main 函数执行前,程序已经执行了许多事情 ...

  • 启动优化

    如何提高APP的启动速度 APP的启动包括三个步骤 main函数执行前 main函数执行后 首屏渲染完成后 如何优...

网友评论

    本文标题:main函数执行前,发生了什么。

    本文链接:https://www.haomeiwen.com/subject/tgowzttx.html