1. c程序总要从main函数开始执行,和你是在单片机或linux平台没关系,有且只一个main函数。
内核调用exec, exec调用 c启动程序,c启动程序调用main函数。
内核使程序执行在唯一方法要调用主exec函数。
2.每个程序都有一个环境表,与参数表一样,环境表也是一个指向字符串在二级指针char **,指向的在环境包括HOME PATH SHELL USER等。
3.c程序在存储布局
正文段,控制程序在执行在代码,比如函数,正文段是共享,只读
.data段 在定义时候被赋值的全局变量 存储的段,其内容保寸在磁盘上,需要时再写到内存上
.bss段 未初始化在全局变量 ,其内容会由操作系统设置为0或空指针,其内容不保持在磁盘上
.栈 保存函数相关的信息
.堆 动态存储分配区,比如malloc申请在存储区
4.共享库和 -static选项 ,共享库优点减少了可执行文件在长度,缺点要增加了运行时间在开销。这种开销发生在第ta一次被执行时,原因不清楚。
-static 静态编译 编译时复制粘贴重复展开
5. 自动变量,寄存器变量和易失变量和-O选项。不进行优化(-O), 自动变量,寄存器变量和易失变量 ,全局变,局部静态变量全部放在存储器中;优化后
自动变量和寄存器变量都放在寄存器中,volitale变量仍在存储器中。