Linux系统之程序源码编译与安装(理论+实战)

一、什么是编译器?

• 什么是编译器?
编译器就是将一种计算机语言”翻译”成另一种语言的程序
• 编译器的工作流程

cfd6ab3168994c40bb025f34bd3a3c2d.png

bc942e22af034bff8bb31ecdc6aa10dd.png

二、编译器预处理功能

1.将源程序(C/CPP)中所有#define删除并展开所有宏定义。
2.过滤左右注释“//”和”/* */”中的内容。
3.保留所有#pragma编译器指令。
4.添加行号和文件名标识,以便于编译时编译器产生调试用的行号信息,及用于编译时产生编译错误或者警告信息显示行号。
5.处理所有的预处理命令,比如#if #endif等。
gcc test.c -E -o test.i 

24d1441b7dca42eb896ec637ec172eab.png

3b2329e520eb410abdc94811ebe93237.png860e62e2efa44df4a262710daa97df45.png 746a4f3e9aa3499692f24949d7977ccd.png

904332d52c4049828c2deb4b7147a78f.png 行标记:源文件名和行号通过格式为#linenum文件名标志的行来传递。代表下一行起源于文件filename中的linenum行。
行末数字标准含义:
‘1’表示新的文件开始;‘2’表示返回到一个文件;‘3’表示以下文件来自系统头文件;‘4’表示下面的文件应该被包装在extern “C”块中。

 三、编译有哪些功能?

3.1 编译器功能:
⚫1、词法分析:分析关键字,标识符,立即数的合法性;
⚫2、语法分析:检查代码是否遵循C语言语法规则;
⚫3、语义分析:分析表达式是否合法;

 编译过程就是对预处理完成的文件进行一系列词法分析,语法分析及优化后生成相应的汇编代码。
编译需要的指令:gcc test.i -S -o test.s

99ce70234cb74c66828252176b3b27ed.png 5992740abc8e4280bf80700b398b85de.png

3.2 汇编:
汇编过程调用主要对汇编代码进行处理,生成处理器能识别的指令,保存在后缀名为.o的目标文件中。 

•1、执行者:汇编器;
•2、操作:使用汇编器将汇编代码转化为机器可执行的机器码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值