前言

一般我们在linux操作系统编译运行C程序,都是直接编译成可执行程序直接运行,没有对中间过程进行剖析,过程如下。

一、预处理阶段

预处理阶段主要完成宏替换、头文件展开、条件编译、注释。
gcc -E hello.c -o hello.i -E只做预处理,执行之后的hello.i还是C文件,只是完成预处理之后的C文件。

二、编译阶段(C程序->汇编)

把c文件编译成为汇编文件(.s),其中进行了词法分析,语法分析,语义分析、生成中间代码、对代码进行优化等工作。
gcc -S hello.i -o hello.s

三、汇编阶段

把汇编文件(.s)编译成可重定位文件(.o)。
gcc -c hello.s -o hello.o

四、链接阶段(静态链接和动态链接)

把可重定位文件(.o)链接成为可执行文件,其中链接可分为静态链接和动态链接
gcc hello.o -o hello

linux C程序运行过程解析相关推荐

  1. Android 系统 (79)---Android应用程序安装过程解析

    Android应用程序安装过程解析 Android应用程序安装过程解析 1.程序安装的4大步骤 (1) 拷贝apk文件到指定目录 在Android系统中,apk安装文件是会被保存起来的,默认情况下,用 ...

  2. Android应用程序安装过程解析(源码解析)

    Android应用程序安装过程解析 1.程序安装的4大步骤 (1) 拷贝apk文件到指定目录 在Android系统中,apk安装文件是会被保存起来的,默认情况下,用户安装的apk首先会被拷贝到 /da ...

  3. 深入理解计算机系统---程序运行过程

    一个简单的C程序从编写到执行输出hello world!其中间经历的是诸多处理过程,而不仅仅是显示黑屏上的几个字符.这个过程透露着计算机系统的运行本质. 个人对该过程进行了一些分析和总结,如果有不对的 ...

  4. 重新认识linux应用程序运行原理

    文章目录 总述 裸程序 存储布局 DEMO 裸程序的缺点 ELF程序 存储布局 hello world分析 elf可执行程序的适用场景 新的需求 共享库 进程地址空间 进程的内存管理 内核工作原理 L ...

  5. 内存管理——程序运行过程中内存的作用以及如何与cpu、os交互

    今年以来,内存条价格暴涨,已经跃升为新的新一代理财产品,所以今天就和大家讨论一下内存条的话题,主要内容就是在程序运行过程中,内存的作用以及如何与CPU,OS交互. 我们先来讨论:计算机的运行究竟是在做 ...

  6. java 程序运行过程 简介

    这里的Java程序运行过程,是指我们编译好代码之后,在命令行开始执行java xxx命令,到java程序开始执行起来的这一过程,我们称其为运行时. 第一步,操作系统解析我们输入的java xxx命令, ...

  7. 第一章 PX4程序编译过程解析

    版权声明:本文为博主原创文章,未经博主允许不得转载. 第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯 ...

  8. PX4程序编译过程解析

    第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯.这个项目是苏黎世联邦理工大学的一个实验室搞出来的.该 ...

  9. VUE程序运行过程-runtime-complier和runtime-only的区别

    1.VUE程序运行过程 当把template传递给vue实例的时候,vue实例会把该模板内容保存到vm.options, 然后对该template解析成ast(抽象语法树) 将ast编译为render ...

最新文章

  1. Chocolates
  2. GDCM:将PDF文件转换为DICOM / PDF文件的测试程序
  3. 13种老人不适合带孩子_农村常见却叫上不上名字的13种野生植物,乡下长大的孩子都见过...
  4. 苹果iOS 10.3.1修复博通Wi-Fi芯片重大安全漏洞
  5. windows 串口编程 c语言,windows下C语言版串口发送程序(基于VS2017)
  6. Nginx负载均衡配置和健康检查
  7. python爬虫知识点总结(七)PyQuery详解
  8. 描绘质量属性的六个常见属性场景。
  9. 音乐自动播放html代码大全,网页HTML音乐播放器代码大全
  10. 计算机识别人脸原理,深入浅出人脸识别原理
  11. 笔记本计算机运行程序,这几招让你的笔记本电脑运行速度变快 必学技巧
  12. c语言英文数字变数字,[求助]阿拉伯数字变英文数字遇到的问题
  13. python中的计数函数_NumPy的搜索和计数函数
  14. 微信公众号模板消息推送(附上完整代码)
  15. windows下mysql8初始化
  16. 电气-接触器与空气开关
  17. BZOJ 1085 骑士精神
  18. Pycharm永久激活七步走
  19. 高校人员信息管理系统(Python版)
  20. 一篇值得收藏的ML数据预处理原理与实践文章

热门文章

  1. 基于arduino的简易警报器
  2. java-Stream.reduce()在实际开发中的应用
  3. AI创作教程之如果在自己的电脑上安装Stable Diffusion并进行AI艺术创作创作
  4. Android 友盟社会化分享的集成与封装
  5. SpringBoot实现自定义异常类。
  6. 快手五秒播放率什么意思?多少比较合理
  7. 趣图:大冬天的,被裁工程师遇上 ofo 退款大军
  8. 【每日随笔】马太效应 ① ( 社会中的一些现象 - 富人/穷人 好学生/坏学生 | 马太效应由来 | 天之道与人之道 - 道德经 )
  9. 数学建模系列-评价模型(五)---灰色综合评价法
  10. Mac如何安装brew?