博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言编译过程解析
阅读量:5117 次
发布时间:2019-06-13

本文共 548 字,大约阅读时间需要 1 分钟。

   

    当我们完成一个c文件后,我们就可以进行编译-链接-执行。那么它们究竟是怎么工作的呢,接下来就给大家介绍整个编译过程(如图所示)!下面就来介绍下在每个过程中,各个模块的作用!

    (1)预处理器:处理注释,用空格表示;删掉#define,展开有用的宏定义;处理条件编译指令如#ifdef,#endif,#else等;处理include文件,展开里面内容;保留#pragma指令。

            在linux下,通过gcc-E文件名.c-O文件名.i命令可以得到预处理后的文件。

    (2)编译:这个过程就是将.i文件编译生成汇编文件,即.s文件,这个过程编译器主要是在判断语法是否正确,然后再来生成汇编文件。

             在linux下,通过gcc-S文件名.c-O文件名.s命令即可生成编译后的文件。

    (3)汇编:在第二步生成的.s文件通过汇编器可以生成目标文件(file.o),即机器码。

    (4)链接:这个过程就是将各个模块联系在一起,可分为动态链接(在程序被同时打开多次时,相同的库文件只占用一个内存)和静态链接(库文件占用多个内存,比较占用内存)。

    (5)通过上面一系列的处理就可以得到可执行的文件,即file.out了。

   

转载于:https://www.cnblogs.com/152-sun/p/3217015.html

你可能感兴趣的文章
linux上apache安装过程
查看>>
《那些年啊,那些事——一个程序员的奋斗史》开始预售了~~!
查看>>
sql 大写
查看>>
MyBatis-resultType 与 resultMap 中的几种返回类型
查看>>
Ubuntu16.04LTS中使用 apt-get install 出现错误 Could not get lock /var/lib/dpkg/lock 的解决方案...
查看>>
关于mongodb的aggregate
查看>>
Java创建线程的两个方法
查看>>
bootstrap 栅格系统 自动隐藏
查看>>
jps命令使用
查看>>
七、Springmvc拦截器
查看>>
FineUI下实现Enter键搜索功能
查看>>
JDownload: 一款可以从网络上下载文件的小程序第四篇(整体架构描述)
查看>>
mysql优化(一)
查看>>
resttemplate.postforobject
查看>>
python自动发送邮件
查看>>
shiro安全框架
查看>>
kafka简介及集群部署
查看>>
Mysql 安装时Mariadb冲突问题
查看>>
java IO流 之 字符流
查看>>
centos7安装nodejs
查看>>