Linux 系统上 C 程序的编译与调试

C程序的编译(gcc)

程序的编译链接过程详解

要想清楚程序的编译链接过程,前提是什么、是可执行文件吗?

文件是一个外存的概念,文件只存在于”外存”(硬盘,U盘,网盘)中,文件由两部分构成,文件名和文件主体。文件的分类: 可执行文件,不可执行文件

可执行文件:在Windows操作系统中,扩展名为:*.exe,*bat 等的文件是可执行文件,可执行文件由指令和数据构成。Linux是靠文件属性来判断是否可执(Linux 不以后缀名区分文件类型)。不可执行文件:其内容是由数据构成。

示例:C/C++语言中:* .c / * .cpp源文件(文本),* .h头文件(文本) * .o / * .obj 二进制目标文件,* .exe可执行文件。

在这里插入图片描述
如图所示:

1. 预编译阶段(预处理阶段)
主要工作是将头文件插入到所写的代码中,生成扩展名为“.i”的文件替换原来的扩展名为“.c”的文件,但是原来的文件仍然保留,只是执行过程中的实际文件发生了改变(这里所说的替换并不是指原来的文件被删除)

a) 删除所有的“#define”,并且展开所有的宏定义;
b) 处理所有的条件预编译指令,“#if”、“#ifdef”、“#endif”等;
c) 处理“#include”预编译指令,将被包含的文件插入到该预编译指令的位置;
d) 删除所有的注释;
e) 添加行号和文件名标识,以便于编译器产生调试用的符号信息及编译时产生编译错误和警告时显示行号;
f) 保留所有的#pragma编译器指令,因为编译器需要使用它们。

2. 编译阶段:
.i文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值