01_程序代码的”生老病死“
1、C/C++程序执行的全过程
预处理 gcc -E main.c -o main.i 将源代码进行预处理操作,生成预处理代码(.i)
编 译 gcc -S main.i -o main.s 将预处理文件进行编译,生成汇编代码(.s)
汇 编 gcc -c main.s -o main.o (-c小写) 将汇编代码进行汇编,生成机器码(.o) (也叫目标代码)
链 接 gcc main.o -o main.exe (a.out) 将机器码和其他目标文件以及动静态链接库进行链接,生成可执行程序(a.out 或 .exe)
2、main函数执行前后发生了什么?
main执行之前:初始化系统相关资源
1、分配内存,设置栈指针,初始化main函数内局部变量(栈)
2、初始化static静态变量、全局变量(.data)
3、未初始化的部分全局变量赋初值(.bss)
4、调用构造函数初始化全局对象
main执行之后:
1、调用析构函数,释放全局对象以及内存
2、对其他函数局部变量进行内存申请,赋值初始化,内存回收等操作