博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GCC编译及连接过程
阅读量:4154 次
发布时间:2019-05-25

本文共 560 字,大约阅读时间需要 1 分钟。

GCC编译链接分为4步:

预处理(Prepressing), 编译(Compilation), 汇编(Assembly)和链接(Linking)

1. 预处理(Prepressing)

就是把源文件*.cpp 和相关的头文件 *.h等被预编译器 cpp 编译成一个 *.i 的文件。

例如: gcc -E hello.c -o hello.i 或者  cpp hello.c > hello.i   (cpp 和 gcc -E 功能相似)

预编译器主要处理源代码中的以 “#” 开始的预编译指令, 规则如下:

- 将所有的 #define 删除,并且展开所有的宏定义

- 处理所有的条件编译指令,比如 “#if", "#ifdef", "#endif", "#else", "#elseif"

- 处理 ”#include" 预编译指令,将被包含的文件插入到该指令的位置。 这个过程是递归进行的,也就是说被包含的文件可能还包含其他的文件。

- 删除所有的注释 // 和 /* */

- 添加行号和文件名标识,比如 #2 “hello.c" 2 , 以便于编译时编译器产生调试用的行号信息及用户编译时产生的编译错误或者警告时能显示行号。

- 保留所有的 #pragma编译器指令,因为编译器需要使用它们

2. 编译

未完,待续。

你可能感兴趣的文章
sqlite3的helloworld
查看>>
MFC下支持中文的SQLite3封装类使用
查看>>
简单高效的多线程日志类
查看>>
研华USB4711A采集卡高速中断模式采集总结
查看>>
从零起步CMFCToolBar用法详解
查看>>
CMFCRibbonStatusBar用法
查看>>
CMFCControlRendererInfo类的参数
查看>>
史上最详细MFC调用mapX5.02.26步骤(附地图测试GST文件)
查看>>
CMFCShellListCtrl使用方法
查看>>
mapnik的demo运行
查看>>
python支持下的mapnik安装
查看>>
cygwin 使用指南
查看>>
只有两类消费电子设备能持续生存
查看>>
基于DUAL-PORT RAM的双CPU快速通讯
查看>>
java 正则表达式
查看>>
ssh超时断开的解决方法
查看>>
Linux下的vi命令用法
查看>>
Linux脚本编程基础
查看>>
Java Socket使用小技巧
查看>>
Servlet生命周期
查看>>