-
编译链接概论
预编译
- 处理以#开头的预编译指令
- gcc -E hello.c -o hello.i /g++ hello.c > hello.i
- 删除#define, 展开宏定义
- 处理条件预编译 #if。。。。
- 递归处理#include,
- 删除注释
- 添加行号和文件名
- 保留所有的#pragma, 编译器要使用
编译
- gcc -S hello.i -o hello.s //生成汇编
- 词法分析
- 语法分析
- 语义分析
- 中间语言生成
- 目标代码生成与优化
- 代码生成器:中间语言转换为目标机器代码,生成汇编代码,依赖机器属性
- 优化汇编
汇编
- gcc -c hello.s -o hello.o
- 生成二进制机器语言
链接
- 地址和空间分配, 符号决议,符号重定位
- 静态链接过程
- main引用其他模块的函数符号,链接器根据符号名(函数签名)自动去相应模块找该函数地址,然后重新修正main函数中该函数的地址;
-
相关阅读:
第01组 Alpha冲刺 (1/6)
第01组(17) 需求分析报告
第01组(17) 团队展示
结对编程作业
05 RDD编程
第九次作业
HDFS
Hadoop安装 与 HDFS体系结构
第三次作业
作业2
-
原文地址:https://www.cnblogs.com/sfth/p/10765278.html
Copyright © 2020-2023
润新知