位置: IT常识 - 正文

静态链接(linux 静态链接)

编辑:rootadmin
前言 ​对于我们平时写代码运行,我们很少去关注编译和链接的过程,因为现在的开发环境都是集成(IDE)的,这些IDE一般都会将编译和链接的过程一步搞定,这一过程又被称为构建。但若经常写代码,经常会有很多莫名其妙的错误让我们不知所措,对于这些错误若我们能知其原因,那是再好不过了。因此本系列就是带你了解 ... 前言

推荐整理分享静态链接(linux 静态链接),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux 静态链接,静态链接时需要解决两个什么问题,静态链接和动态链接的区别,静态链接是在什么时候进行的,静态链接库和动态链接库的区别,静态链接是在()进行的;而动态链接是在()或()进行的,静态链接库和动态链接库的区别,静态链接和动态链接的区别,内容如对您有帮助,希望把文章链接给更多的朋友!

​对于我们平时写代码运行,我们很少去关注编译和链接的过程,因为现在的开发环境都是集成(IDE)的,这些IDE一般都会将编译和链接的过程一步搞定,这一过程又被称为构建。但若经常写代码,经常会有很多莫名其妙的错误让我们不知所措,对于这些错误若我们能知其原因,那是再好不过了。因此本系列就是带你了解这些编译器和链接器在背后的工作

梦开始的地方

​让我们先来看一个最最最经典的例子

//hello.c#include <stdio.h>int main(){ printf("hello world"); return 0;}

​事实上,运行以上过程,可以被分解为四步:预处理、编译、汇编、链接

预编译

​预处理器在预编译阶段会将源代码文件.c和相关的头文件编译为一个.i文件,其中主要处理“#”开头的预编译指令

静态链接(linux 静态链接)

​预编译过程主要处理规则:

删除所有注释 "//" 和 "/**/"处理所有条件预编译指令 "#if"、"#ifdef"等删除所有 "#define",且展开所有宏定义处理预编译指令"#include",将被包含的文件插入到相应的预编译指令位置。当然可能插入的文件还包含其他文件添加行号和文件名标识,以便于编译器在编译时产生调试所用的行号信息和产生编译错误或警告时可以显示行号保留所有#pragma指令,便于编译器使用编译

​所谓编译,就是将上一个预处理阶段处理完的文件进行词法分析、语法分析、语义分析和优化后生成的汇编代码文件。其过程最为关键且复杂。但是现在版本的GCC已经把预编译和编译合并为一个步骤,使用cc1来完成

​现有如下片段:

array[index] = (index + 4) * ( 2 + 6 )词法分析

​首先,源代码程序被输入到扫描器,运用类似有限状态机的算法将源代码的字符序列分割为一系列记号(token)

记号类型array标识符[左方括号index标识符]右方括号=赋值(左圆括号index标识符+加号4数字)右圆括号*乘号(左圆括号2数字+加号6数字)右圆括号词法分析的记号可分为:关键字、标识符、字面量(数字、字符串等)、特殊符号(加号等)识别记号时,扫描器也会将标识符放入符号表,将字面量常量放入文字表,以备往后的步骤使用语法分析

​接下来时语法分析。语法分析器对扫描器产生的记号进行语法分析,再产生语法树,语法树时以表达式为节点的树。语法分析过程会采用上下文无关语法

语法分析过程,会确定运算符号的优先级和含义。此时若出现表达式不合法,编译器则会报告语法分析阶段的错误语义分析

​语法分析会对完成了表达式的语法层面的分析,但其并不知道这个语句是否有意义,因此需要语义分析器进行语义分析,从而对整个语法树的表达式标识类型;若有类型需要做隐式转换,会在语法树中插入相应的转换节点

​语义分析分为两类,静态语义是编译器再编译器可以确定的语义;动态语义则是在运行期才能确定的语义

静态语义包括
本文链接地址:https://www.jiuchutong.com/zhishi/303788.html 转载请保留说明!

上一篇:JavaScript数据类型BigInt实践之id数值太大,导致前后端交互异常(javascript数据类型分为哪两类)

下一篇:python 如何调用api(python 如何调用c)

  • vivox70pro+支持红外遥控吗(vivox70pro+支持红外线吗)

    vivox70pro+支持红外遥控吗(vivox70pro+支持红外线吗)

  • 电脑MAC系统任务栏图标怎么调整大小(mac系统任务管理 快捷键)

    电脑MAC系统任务栏图标怎么调整大小(mac系统任务管理 快捷键)

  • 苹果手机的铃声怎么设置(苹果手机的铃声和媒体声音是一个键吗)

    苹果手机的铃声怎么设置(苹果手机的铃声和媒体声音是一个键吗)

  • 小米9微信闪退(小米微信闪退原因及解决办法)

    小米9微信闪退(小米微信闪退原因及解决办法)

  • iphone录视频声音很小(iphone录视频声音很闷)

    iphone录视频声音很小(iphone录视频声音很闷)

  • 手机信号显示e是什么意思(手机信号显示e网是怎么回事)

    手机信号显示e是什么意思(手机信号显示e网是怎么回事)

  • 华为星耀版与普通版区别(华为荣耀和星耀区别)

    华为星耀版与普通版区别(华为荣耀和星耀区别)

  • word进行打印预览时,只能一页一页地观看(word打印预设)

    word进行打印预览时,只能一页一页地观看(word打印预设)

  • 怎么下载抖音app软件(海信电视怎么下载抖音app)

    怎么下载抖音app软件(海信电视怎么下载抖音app)

  • 苹果14系统什么时候更新

    苹果14系统什么时候更新

  • b站轻视频是什么(b站轻视频有收益吗)

    b站轻视频是什么(b站轻视频有收益吗)

  • 如何解除电脑QQ扫码登录(如何解除电脑休眠状态黑屏)

    如何解除电脑QQ扫码登录(如何解除电脑休眠状态黑屏)

  • 电脑显示器显示无信号是为什么(电脑显示器显示不全怎么调整)

    电脑显示器显示无信号是为什么(电脑显示器显示不全怎么调整)

  • 网络适配器多路传送器协议打钩吗(网络适配器多路传输协议勾选无效)

    网络适配器多路传送器协议打钩吗(网络适配器多路传输协议勾选无效)

  • 小米推送通知是什么意思(小米系统消息推送)

    小米推送通知是什么意思(小米系统消息推送)

  • 一体机内存条怎么取出(一体机内存条怎么换)

    一体机内存条怎么取出(一体机内存条怎么换)

  • 快手视频误删怎么恢复(快手视频删除后怎么恢复)

    快手视频误删怎么恢复(快手视频删除后怎么恢复)

  • oppoa57呼吸灯在哪设置(oppoa59s呼吸灯)

    oppoa57呼吸灯在哪设置(oppoa59s呼吸灯)

  • 视频复制链接后,在哪里可以找到(视频复制链接后从哪里能提出来)

    视频复制链接后,在哪里可以找到(视频复制链接后从哪里能提出来)

  • kaggle注册以及数据集下载全流程(kaggle官网注册)

    kaggle注册以及数据集下载全流程(kaggle官网注册)

  • 如何使用Vscode开发Uni-app项目以及注意事项详解(vscode怎么开始编程)

    如何使用Vscode开发Uni-app项目以及注意事项详解(vscode怎么开始编程)

  • 免费镜像 ChatGPT 网站随你挑和分享一批可用的 API Keys(免费镜像翻转软件)

    免费镜像 ChatGPT 网站随你挑和分享一批可用的 API Keys(免费镜像翻转软件)

  • dedecms织梦如何自定义会员中心目录名称的方法(织梦如何使用)

    dedecms织梦如何自定义会员中心目录名称的方法(织梦如何使用)

  • 附加税减免要做哪些科目
  • 航天金税盘使用说明
  • 小规模免缴增值税吗
  • 提存金属于职工薪酬吗
  • 收企业利息如何做账
  • 已经勾选确认的发票可以取消认证吗
  • 委托代销受托方怎么做账
  • 公司车辆出售给个人怎么做账
  • 自制半成品具体如何处理账务?
  • 差旅费住宿专票可以抵扣增值税吗
  • 税控盘减免怎么做账
  • 中国增值税发展史
  • 地税退税怎么做分录
  • 公司法人借款给公司怎么取出来
  • 银行账户注销以后预留印鉴
  • 货到付款一般付多少运费
  • Win10 64位正式版系统安装方法全过程图解(U大师)
  • 鸿蒙系统垃圾清理
  • 存续在业有什么区别
  • 明股实债和明债实股
  • 华为p50e手机价格及参数
  • 修改系统帐户用什么软件
  • 经营营业执照以外
  • 广告费用计入什么会计科目
  • PHP:pg_close()的用法_PostgreSQL函数
  • 工行对公贷款利息扣款时间是几点
  • 工程投标保证金一般是多少
  • 破产资产拍卖
  • 销售方收到购买方的红字信息表
  • 取得短期借款会计科目
  • 企业成立多久可以注销
  • esp8266 dht22
  • react组件库有哪些
  • 小规模纳税人的条件
  • YII视图整合kindeditor扩展的方法
  • 真正的出道仙谁来封
  • “oracle”
  • 前端css要掌握到什么程度
  • 固定资产到期后残值怎么处理
  • 低值易耗品五五摊销法怎么计算
  • 处置结余的工程款怎么算
  • react避免子组件更新
  • discuz论坛无法登录
  • 赠送顾客的商品怎么入账
  • 处置固定资产开发票
  • 公司向法人借款会计分录
  • 沙箱支付宝app正式版
  • 业务预算包括直销费用吗
  • mysql常见优化手段
  • 新会计制度对会计人员的影响
  • 企业所得税的营业成本怎么填
  • 招标押金有规定吗
  • 固定资产入账和未入账的区别
  • 哪些税计入税金及附加
  • 移动怎么开当月发票
  • 会计法中单位负责人均指法定代表人
  • 进项税额转出的所有会计分录
  • 房地产企业扣除土地价款如何申报
  • 债券清算原则
  • 未分配利润是负数怎么消化掉
  • 商标注册费计入哪个科目
  • 物业安装摄像头的规定
  • 消防安装公司属于什么行业
  • 收到分公司负责人的礼物
  • XP系统如何设置U盘启动
  • 微软和苹果是什么关系
  • windowxp一直在windowxp界面
  • centos7安装视频教程
  • Win7系统怎么打开文件后缀名
  • linux ii
  • vs opengl配置
  • require jquery
  • 鼠标焦点离开触发查询
  • shell 数组变量
  • android设计模式的应用场景
  • jquery的动画效果
  • 安卓手机管家在哪里打开
  • 微信收款商业版和个人经营收款码区别
  • 加工中心钻孔进给
  • 事业单位的会计制度是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设