linux系统中-E,-S,-c的区别和作用(怎么讲代码转化为机器识别的语言)

本文介绍了Linux系统中编译程序的四个步骤:预处理、编译、汇编和链接。通过gcc命令的-E、-S和-c选项分别演示了如何生成预处理文件、汇编文件和目标文件。同时,文章提到了静态链接的特性,即地址绑定在编译时完成。
摘要由CSDN通过智能技术生成

         许多初学者都有比较大的疑惑,电脑是怎么识别我们写的代码并进行处理的呢?其实这个问题对我们初学者来说是很重要的,只有了解机器的运行原理,我们才能真正地学号留下。那么今天我就以此为题为大家略讲一二,有错误的地方希望大家多多指教。

一般来说我们编译一个程序都是直接通过gedit  project.c编辑代码,然后通过gcc project.c编译代码,最后通过./a.out执行,但是今天我们将其分解为四个步骤:

分析编译的过程  ---->  获得机器码

1、预处理: gcc -E project.c -o project.i     //生成预处理文件 project.i 宏展开 包含展开
2、编译:   gcc -S project.i -o project.S     //生成汇编文件 project.S  //高级语言转成低级语言
3、汇编:   gcc -c project.S -o project.o     //生成机器语言 project.o  生成未地址定位的机器码 
4、链接:   gcc project.o  -o project         //生成可运行程序project   加载库文件

1、预处理: gcc -E project.c -o project.i     //生成预处理文件 project.i 宏展开 包含展开 -o后面要跟着生成的文件。

   此过程将头文件里的定义如stdio.h里的例如extern int sys_nerr;等定义全部展开添加到mian函数里面,pri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值