程序编译过程
来源:Creator_Ly     阅读:656
云上智慧
发布于 2019-01-09 18:42
查看主页

程序编译过程

程序编译流程

预解决主要是解决以“#”号开头的命令,包括宏定义、文件包含、条件编译。

编译的时候会检测语法、函数、变量的公告等情况,有错误则立即报错;经过编译器将c程序编译成汇编程序后,再经过汇编器将会汇编程序编译成.o文件。

链接器就是将.o文件与外部的.a库、.lds链接脚本等文件进行编译生成可执行文件.elf、.out。

可执行文件一般还需要转换工具(objcopy)转换成二进制文件.bin、.hex等

可执行程序对数据的存储包括BSS段、数据段、代码段,这些段在.lds链接脚本里面会定义。

堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或者缩减。当进程调用malloc/free等函数分配内存时,新分配的内存就被动态增加到堆上(堆被扩张)/释放的内存从堆中被剔除(堆被缩减)

栈(stack):栈又称堆栈, 存放程序的局部变量(但不包括static公告的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,栈用来传递参数和返回值。因为栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。

memory
免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
Java并发 -- 线程生命周期
Python中字符串拼接的N种方法
Centos-安装最新的Python3.6.3
在币圈,为什么要做量化
精准计算RecyclerView滑动距离
首页
搜索
订单
购物车
我的