C/C++ 编译流程(预处理、编译、汇编、链接)

C/C++ 程序常用文件名后缀:

序号拓展名说明
1.a静态库,由目标文件构成的文件库
2.c源码,必须经过预处理
3.C  .cc  .cppC++ 源码,必须经过预处理
4.hC/C++ 源码的头文件
5.i.c 经过预处理得到的 C源码
6.ii.C .cc .cpp 经过预处理得到的 C++源码
7.s汇编语言文件,是.i文件编译后得到的中间文件
8.o目标文件,是编译过程得到的中间文件
9.so共享对象库,也称动态库

 

程序的基本流程:

 

序号步骤工作内容
1预处理PreprocessC 编译器对各种预处理命令进行处理,包括
(1)展开所有的头文件
(2)宏定义的替换
(3)解析条件编译 并添加到文件中
2编译Compile将预处理完的文件进行词法分析语法分析语义分析优化后,生成相应的 .s 汇编代码
3汇编Assemble将编译完的汇编代码翻译成机器码,并生成可重定位目标程序的 .o 目标文件
4链接Link通过链接器 ld目标文件库文件链接在一起,最后生成可执行文件(executable file)

 

GCC(GNU Compiler Collection,GNU编译器套件,是由 GNU 开发的编程语言编译器)的相关指令和参数如下:

序号命令工作内容
1gcc  -E  hello.c  -o  hello.i预处理(预处理器 Preprocessor:cpp。-E 只对文件进行预处理,不编译汇编和链接)
2gcc  -S  hello.i  -o  hello.s编译(编译器 Compiler:gccg++。-S 只对文件进行编译,不汇编和链接)
3gcc  hello.s  -o  hello.o汇编(汇编器 Assembler:as
4gcc  hello.o  -o  hello链接(链接器 Linker:ld

GCC 单步完成编译

第1种命令:gcc   hello.c   -o   hello

第2种命令:gcc  -o  hello  hello.c

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值