• 程序员的自我修养 学习笔记(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

  • 相关阅读:
    stack.pop()和stack.peek()的区别
    信号与系统,系统函数的影响
    java中short、int、long、float、double取值范围
    Spring从容器获得组件的方法
    Eclipse中项目的类路径文件夹
    Math的常用方法
    spring基本入门步骤
    opencv入门
    make和cmake构建工具
    使用eclipse开发c++程序及开发环境搭建
  • 原文地址:https://www.cnblogs.com/cherishui/p/3793719.html
Copyright © 2020-2023  润新知