Linux下将源文件编译成目标文件的过程解析

 更新时间:2018年02月03日 14:17:03   作者:Senvenno27  
这篇文章主要介绍了Linux下将源文件编译成目标文件的过程解析,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

简介

请讲一下linux如何源文件逐步编译成可执行文件。

解答

首先先上图对编译的整个过程有个感性的认识,然后再逐步分析各个过程。

以hello.c 程序为例

# include <stdio.h>
main{
  printf("hello\n");
}

一个.c源程序需要经过预处理器生成.i文件,再经过编译器生成.s文件,再经过汇编器生成可重定位目标文件.o文件,再与其他.o文件经过链接器生成最终的可执行目标程序。

预处理阶段。主要是处理源文件中以“#”开头的预编译指令。

删除#define并展开宏

处理所有条件预编译指令,如#if, #ifdef, #endif

插入头文件到“#include”处

删除所有注释

添加行号和文件名标识,以便编译时编译器产生调试用的行号信息

保留所有#pragma编译指令。

编译阶段。将预处理得到的预处理文件进行语法分析,词法分析,语义分析,优化后,生成汇编代码文件(汇编语言源程序)。

汇编阶段。利用汇编程序(汇编器)将汇编语言源程序转换成机器指令序列(机器语言程序)。

链接阶段。将多个可重定位的目标文件.o合并以生成可执行文件,其可以被加载到内存中,由系统执行。

总结

以上就是本文关于Linux下将源文件编译成目标文件的过程解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • linux ssh 使用深度解析(key登录详解)

    linux ssh 使用深度解析(key登录详解)

    这篇文章主要介绍了linux ssh 使用深度解析(key登录详解),需要的朋友可以参考下
    2015-07-07
  • Centos8环境下修改ssh端口号方法

    Centos8环境下修改ssh端口号方法

    大家好,本篇文章主要讲的是Centos8环境下修改ssh端口号方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下哦,方便下次浏览
    2021-12-12
  • Apache与Tomcat服务器整合的基本配置方法及概要说明

    Apache与Tomcat服务器整合的基本配置方法及概要说明

    网上的乱七八糟的资料太多了,很多都是自说自话,希望这篇文章能给大家带来一些清晰的思路。
    2010-12-12
  • ubuntu安装显卡驱动和cuda教程

    ubuntu安装显卡驱动和cuda教程

    这篇文章主要介绍了ubuntu安装显卡驱动和cuda教程,文中附有详细的图文安装步骤以及安装配置代码,跟着本文来进行操作,有需要的朋友可以参考下
    2021-09-09
  • 深入理解Apache Airflow 调度器(最新推荐)

    深入理解Apache Airflow 调度器(最新推荐)

    Apache Airflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并遵循最佳优化实践,你可以确保数据管道高效可靠地运行,本文介绍Apache Airflow 调度器的相关知识,感兴趣的朋友一起看看吧
    2025-02-02
  • Linux下安装Python3和django并配置mysql作为django默认服务器方法

    Linux下安装Python3和django并配置mysql作为django默认服务器方法

    下面小编就为大家带来一篇Linux下安装Python3和django并配置mysql作为django默认服务器方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • 在Linux中查看及终止正在运行的后台程序方法

    在Linux中查看及终止正在运行的后台程序方法

    今天小编就为大家分享一篇在Linux中查看及终止正在运行的后台程序方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 在Linux系统下如何编译并执行C++程序

    在Linux系统下如何编译并执行C++程序

    这篇文章主要介绍了在Linux系统下如何编译并执行C++程序问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • linux系统用户管理与grep正则表达式示例教程

    linux系统用户管理与grep正则表达式示例教程

    这篇文章主要给大家介绍了关于linux系统用户管理与grep正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用linux系统具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • Ubuntu 安装cuda10.1驱动的实现步骤

    Ubuntu 安装cuda10.1驱动的实现步骤

    这篇文章主要介绍了Ubuntu 安装cuda10.1驱动的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论