c从源码到运行发生了哪些事

092000 092000     2022-09-05     711

关键词:

一个C/C++程序从源代码到可执行程序主要经历了四个阶段:

  ①预处理。包括展开宏、处理#include,#if,#ifdef等指令、删除注释、还有一些其他操作。相关命令:gcc -E或cpp

  ②编译。对预处理文件进行分析并生产汇编代码,主要包括语法分析、语义分析、汇编代码生成、(源/汇编)代码优化。相关命令:gcc -S

  ③汇编。根据编译产生的汇编代码生成机器指令,过程相当于是根据汇编语法进行翻译。相关命令:gcc -c或as

  ④链接。用链接器链接程序运行需要的目标文件和库文件,生成可执行文件。链接分为动态链接和静态链接。相关命令gcc或ld

 

整个过程可以用下面的流程图来表示:

 

要注意对于静态链接库,在进行链接步骤时,相关实现代码会融合到a.out中;而对动态链接库,在链接时,相当于在程序中进行了标记,并没有把具体实现代码融合进来,所以在程序运行的时候,会调用具体的实现代码。简而言之,静态链接库具有时间优势,而动态链接库具有空间优势。通常会优先考虑用动态链接库。

 

今年上半年,通信行业发生了哪些事?

█一月1月5日,中国电信等单位联合发布了自主研发的共建共享区块链调度平台。该平台全球首创了基于区块链的跨运营商5G运营调度系统、跨运营商区块链BaaS联盟、跨运营商大数据无线网精准规划三大创新,为共建共享... 查看详情

今年上半年,通信行业发生了哪些事?

█一月1月5日,中国电信等单位联合发布了自主研发的共建共享区块链调度平台。该平台全球首创了基于区块链的跨运营商5G运营调度系统、跨运营商区块链BaaS联盟、跨运营商大数据无线网精准规划三大创新,为共建共享... 查看详情

查找在提交到 Github 时发生了哪些文件夹更改

...录中。对于我们的CD管道,我们只想在已更改的文件夹中运行测试,而不是在未发生更改的文件夹中运行。 查看详情

一个页面从输入url到加载完成,发生什么事

1、浏览器会开启一个线程来处理这个请求,对URL分析判断如果是http协议就按照Web方式来处理;2、调用浏览器内核中的对应方法,比如WebView中的loadUrl方法;3、通过DNS解析获取网址的IP地址,设置UA等信息发出第二个GET请求;4、... 查看详情

你做了哪些事,导致老板下调了对你的评价?

...创业有些时间了,想写一下从老板的角度看员工,更注重哪些点,现在回想自己打工时,做的好些事堪称二逼+低智,但当时觉得无比正确,熟不知,你的某些行为让老板很不喜欢,有多少人跟我当时一样,tooyoungtoosimple. 还... 查看详情

在页面生命周期执行时page对象在savestate阶段都发生了什么事?

先看下 SaveViewState的源码:1//Answeranystatethiscontroloritsdescendantswanttosaveonfreeze.2//TheformatforsavingisTriplet(myState,ArrayListchildIDs,ArrayListchildStates),3//wheremyStateorchildStatesandc 查看详情

从 iOS 13.6.1 升级到 iOS 14 时应用行为发生变化

...:我刚刚完成了为iOS13.6.1构建的应用程序,一切都按预期运行。我在运行iOS14.0的女朋友的手机上进行了尝试。很多行为都发生了变化。没有详细说明发生了什么变化,我只是想知道这是iOS更新的功能还是错误。我是 查看详情

verilog基础计算机体系架构cpu发生中断要做哪些事?什么是中断向量表?(面试常问)

...xff1a;保存现场、处理中断程序、恢复现场文章目录一、CPU发生中断要做哪些事?1、保存现场2、处理中断程序3、恢复现场二、什么是中断向量表?一、CPU发生中断要做哪些事?处理中断事件的程序称为中断处理程序&#x... 查看详情

今天开始写博,关于在unity这条路上发生的各种事!

2015/10/1518:00大概一周前,我开始了Unity的学习,目前看的是《Unity4.x从入门到精通》这本书,跟着书上代码敲敲打打,已经看到第5章了,学习Unity必须精通C#,所以准备去图书馆借一本C#的书,对了,... 查看详情

java虚拟机jvm启动后java代码层面发生了什么?

...里面都发生了哪些活动?这些活动在java代码(反编译或者是源码)级别有所 查看详情

#从源码到可执行程序

从源码到可执行程序从源码到可执行程序1.概述2.预编译3.编译4.汇编5.链接1.概述  很多编译型语言的源码都需要被编译之后才可以正常的运行,如常用的c语言,它需通过编辑器的编译把它变成0101序列的机器语言才可以在... 查看详情

这一年我做了哪些事2021年卷王の年终总结(代码片段)

文章目录这一年我做了哪些事【2021年卷王の年终总结】前言获得了什么罗列几个数据卷王是怎样炼成的?从寒假开始卷5月份参加“新星计划”大三下学期接40+课设疑问:为什么这么卷?失去了什么:谈谈明年的计划࿱... 查看详情

这一年我做了哪些事2021年卷王の年终总结(代码片段)

文章目录这一年我做了哪些事【2021年卷王の年终总结】前言获得了什么罗列几个数据卷王是怎样炼成的?从寒假开始卷5月份参加“新星计划”大三下学期接40+课设疑问:为什么这么卷?失去了什么:谈谈明年的计划࿱... 查看详情

性能分析从开始输入url到页面加载完成的过程中都发生了什么事情?

...稍后更新】第一个问题:从输入URL到浏览器接收的过程中发生了什么事情? 第二个问题:浏览器如何向网卡发送数据? 第三个问题:数据如何从本机网卡发送到服务器? 第四个问题:服务器接收到数据后会进行哪些... 查看详情

androidjetpack从使用到源码深耕调度任务组件workmanager从实践到原理

...我们对Jetpack的调度任务组件WorkManager,由使用入手,对其源码进行深入学习、总结一下。1.问题研究这个框架之前,我们基于自己已有的知识体系,想一些问题,给自己设定一些目标,带着目标和问题,去阅读这块的源码,相信... 查看详情

浏览器从输入网址发生的事(前端优化)

...们要优化这个程序呈现的速度,首先就得弄明白这其中都发生了什么事?1.处理环节与顺序这张图大致的描述了浏览器的一系列工作。2.chrome中的performance属性在chrome浏览器的console中输入window.performace会得到下图的内容usedJSHeapSize&... 查看详情

从okex到okx欧易品牌升级埋了哪些彩蛋?

...欧易OKX的全新升级并不止于外在,细看其产品前端也发生了较大改变,首页产品不仅有Exchange功能栏,还整合增加了MetaX功能, 查看详情

阿里面试官问我:java从编译到执行,发生了什么?

...门「跨平台」的语言,也就是「一次编译,到处运行的」?候选者:很好理解啊,因为我们有JVM。候选者:Java源代码会被编译为class文件,class文件是运行在JVM之上的。候选者:当我们日常开发安装... 查看详情