zoukankan      html  css  js  c++  java
  • 程序员的自我修养 学习笔记(5)

    运行库

         程序的入口点,实际上是一个程序的初始化和结束部分,往往是运行库的一部分。典型的程序运行步骤大致如下:

        1. 操作系统在创建进程后,把控制权交给了程序入口,此入口通常为运行库中的某个入口函数

       2. 入口函数堆运行库和程序运行环境进行初始化,包括堆栈、I/O、线程、全局变量构造等等

       3. 完成初始化后,调用main函数,正式开始执行程序的主体部分。

       4. main函数执行完毕后,返回到入口函数,入口函数进行后续的清理工作,包括全局变量析构、堆销毁、关闭I/O,然后进行系统调用结束进程。

       glibc程序的入口地址为_start,这个入口有ld连接器默认的链接脚本所指定。

    C语言标准库,ANSI C的标准库由24个C头文件组成,仅仅包含了数学函数、字符/字符串处理、I/O等基本方面。例如

           标志输入输出 文件操作 stdio.h

           字符操作 ctype.h

           字符串操作 string.h

           数学函数     math.h

          资源管理/格式转化   stdlib.h

          时间/日期   time.h

         断言   assert.h

         各种类型上的常数   limits.h  float.h

          

    glibc库:glibc库,即GNU C Library,是GNU旗下的C标准库,最初由自由软件基金会发起开发,目的是为GNU操作系统开发一个C标准库。glibc的发布版本主要由两部分组成,一部分是头文件,比如stdio.h,stdlib.h等等,往往位于/usr/include、另一部分,则是库的二进制文件部分,就是C语言的标准库,它有静态和动态两个版本。动态库为/lib/libc.so.6(即为第六个libc版本),静态库为/usr/lib/libc.a

    glibc的启动文件,有.init 和 .finit段,这两个段中的代码,最终会被拼成两个函数_init()和_finit(),这两个函数会先于/后于/main函数执行。

    Windows系统是完全基于DLL机制的,它通过DLL对系统调用进行了包装,进行了所谓了Windows API。

    image

  • 相关阅读:
    一、业务场景-随机生成患者姓名
    十一、python的高级语法与用法
    全排列小结
    LeetCode——150. Evaluate Reverse Polish Notation
    斐波那契数列算法小结
    LeetCode——14. Longest Common Prefix
    LeetCode——13. Roman to Integer
    LeetCode——12. Integer to Roman
    LeetCode——11. Container With Most Water
    LeetCode——10. Regular Expression Matching
  • 原文地址:https://www.cnblogs.com/cherishui/p/3793719.html
Copyright © 2011-2022 走看看