linux C程序运行过程解析
前言
一般我们在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程序运行过程解析相关推荐
- Android 系统 (79)---Android应用程序安装过程解析
Android应用程序安装过程解析 Android应用程序安装过程解析 1.程序安装的4大步骤 (1) 拷贝apk文件到指定目录 在Android系统中,apk安装文件是会被保存起来的,默认情况下,用 ...
- Android应用程序安装过程解析(源码解析)
Android应用程序安装过程解析 1.程序安装的4大步骤 (1) 拷贝apk文件到指定目录 在Android系统中,apk安装文件是会被保存起来的,默认情况下,用户安装的apk首先会被拷贝到 /da ...
- 深入理解计算机系统---程序运行过程
一个简单的C程序从编写到执行输出hello world!其中间经历的是诸多处理过程,而不仅仅是显示黑屏上的几个字符.这个过程透露着计算机系统的运行本质. 个人对该过程进行了一些分析和总结,如果有不对的 ...
- 重新认识linux应用程序运行原理
文章目录 总述 裸程序 存储布局 DEMO 裸程序的缺点 ELF程序 存储布局 hello world分析 elf可执行程序的适用场景 新的需求 共享库 进程地址空间 进程的内存管理 内核工作原理 L ...
- 内存管理——程序运行过程中内存的作用以及如何与cpu、os交互
今年以来,内存条价格暴涨,已经跃升为新的新一代理财产品,所以今天就和大家讨论一下内存条的话题,主要内容就是在程序运行过程中,内存的作用以及如何与CPU,OS交互. 我们先来讨论:计算机的运行究竟是在做 ...
- java 程序运行过程 简介
这里的Java程序运行过程,是指我们编译好代码之后,在命令行开始执行java xxx命令,到java程序开始执行起来的这一过程,我们称其为运行时. 第一步,操作系统解析我们输入的java xxx命令, ...
- 第一章 PX4程序编译过程解析
版权声明:本文为博主原创文章,未经博主允许不得转载. 第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯 ...
- PX4程序编译过程解析
第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯.这个项目是苏黎世联邦理工大学的一个实验室搞出来的.该 ...
- VUE程序运行过程-runtime-complier和runtime-only的区别
1.VUE程序运行过程 当把template传递给vue实例的时候,vue实例会把该模板内容保存到vm.options, 然后对该template解析成ast(抽象语法树) 将ast编译为render ...
最新文章
- Chocolates
- GDCM:将PDF文件转换为DICOM / PDF文件的测试程序
- 13种老人不适合带孩子_农村常见却叫上不上名字的13种野生植物,乡下长大的孩子都见过...
- 苹果iOS 10.3.1修复博通Wi-Fi芯片重大安全漏洞
- windows 串口编程 c语言,windows下C语言版串口发送程序(基于VS2017)
- Nginx负载均衡配置和健康检查
- python爬虫知识点总结(七)PyQuery详解
- 描绘质量属性的六个常见属性场景。
- 音乐自动播放html代码大全,网页HTML音乐播放器代码大全
- 计算机识别人脸原理,深入浅出人脸识别原理
- 笔记本计算机运行程序,这几招让你的笔记本电脑运行速度变快 必学技巧
- c语言英文数字变数字,[求助]阿拉伯数字变英文数字遇到的问题
- python中的计数函数_NumPy的搜索和计数函数
- 微信公众号模板消息推送(附上完整代码)
- windows下mysql8初始化
- 电气-接触器与空气开关
- BZOJ 1085 骑士精神
- Pycharm永久激活七步走
- 高校人员信息管理系统(Python版)
- 一篇值得收藏的ML数据预处理原理与实践文章
热门文章
- 基于arduino的简易警报器
- java-Stream.reduce()在实际开发中的应用
- AI创作教程之如果在自己的电脑上安装Stable Diffusion并进行AI艺术创作创作
- Android 友盟社会化分享的集成与封装
- SpringBoot实现自定义异常类。
- 快手五秒播放率什么意思?多少比较合理
- 趣图:大冬天的,被裁工程师遇上 ofo 退款大军
- 【每日随笔】马太效应 ① ( 社会中的一些现象 - 富人/穷人 好学生/坏学生 | 马太效应由来 | 天之道与人之道 - 道德经 )
- 数学建模系列-评价模型(五)---灰色综合评价法
- Mac如何安装brew?