C学习笔记 - 2、编译器(Compiler)

程序编译的过程

词法分析 - 解析字符,生成单词符号
语法分析 - 解析单词,检查是否符合语法
中间代码生成 - 源程序的内部表示,结构更加简单和规范
代码优化 - 进行优化等价转换
目标代码生成 - 生成可执行的机器语言代码

编译器(Compiler)

编译器是什么?

把源代码转换成CPU可以识别的二进制指令的系统软件。
源程序 ====================> 可运行的二进制程序

常用编译器

Linux/Unix系统
gcc(GNU C Compiler,GNU Compiler Collection):目前不只支持编译C语言,还支持C++、Java、Pascal等等,支持make工具。
Windows系统
cl.exe(微软提供的编译器)
MinGW(GCC编译器的Windows版本)
Cygwin(Windows平台上运行的Linux模拟环境)

TODO 还需要了解下各种编译器

gcc编译器

gcc编译过程

预处理(preprocessing)
处理源代码中的预编译指令和文件包含[-E]
gcc -E -o pre.i source.c

编译(compilation)
编译生成汇编语言文件.s[-S]
gcc -S -o ass.s source.c

汇编(assembly)
汇编生成二进制机器代码.o[-c]
gcc -c -o ass.o source.c

链接(linking)
链接目标文件和库文件(可执行文件)
gcc ass.o -o ass.out

扩展名缺省设定

.a[库文件]
.h[头文件]
.c[C源代码文件] -> .i[预处理后的C中间代码文件]
.cpp[C++源代码文件] -> .ii[预处理后的C++中间代码文件]
.s[汇编语言源代码文件]
.o[汇编后的目标文件]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值