位置: 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)

  • se支持3d touch这个功能吗(se有没有3dtouch功能)

    se支持3d touch这个功能吗(se有没有3dtouch功能)

  • 电脑怎么上锁(电脑怎么上锁屏密码快捷键)

    电脑怎么上锁(电脑怎么上锁屏密码快捷键)

  • 抖音能查看访客记录吗(抖音刷访客)

    抖音能查看访客记录吗(抖音刷访客)

  • 黑胶和音乐包有什么不同(黑胶跟音乐包)

    黑胶和音乐包有什么不同(黑胶跟音乐包)

  • 微信零钱明细删除了还能恢复吗(微信零钱明细删除了怎么还有记录)

    微信零钱明细删除了还能恢复吗(微信零钱明细删除了怎么还有记录)

  • 微信忽然无法正常使用(微信无法正常运行咋办)

    微信忽然无法正常使用(微信无法正常运行咋办)

  • 抖音里的创作收益是什么意思(抖音里创作收入在哪里)

    抖音里的创作收益是什么意思(抖音里创作收入在哪里)

  • aus插口是什么意思(auxsend接口是什么意思)

    aus插口是什么意思(auxsend接口是什么意思)

  • 华为nova7se有没有红外(华为nova7se有没有门禁卡功能)

    华为nova7se有没有红外(华为nova7se有没有门禁卡功能)

  • 华为mate30pro隐私空间怎么设置

    华为mate30pro隐私空间怎么设置

  • 天猫榜单是什么意思(天猫榜单是正品吗)

    天猫榜单是什么意思(天猫榜单是正品吗)

  • word文档怎么变大页面(word文档怎么变成一页排版)

    word文档怎么变大页面(word文档怎么变成一页排版)

  • 爱奇艺自制是什么意思(爱奇艺上面的自制是什么意思)

    爱奇艺自制是什么意思(爱奇艺上面的自制是什么意思)

  • 腾讯免流量怎么设置(腾讯免流量怎么弄)

    腾讯免流量怎么设置(腾讯免流量怎么弄)

  • 对方关机打微信电话通吗(对方关机打微信电话有提示吗)

    对方关机打微信电话通吗(对方关机打微信电话有提示吗)

  • 华为hd有什么用(华为hd有什么用途和功能)

    华为hd有什么用(华为hd有什么用途和功能)

  • 嘀嗒怎么邀请车主(嘀嗒出行如何邀请好友当车主)

    嘀嗒怎么邀请车主(嘀嗒出行如何邀请好友当车主)

  • thinkpad哪个是开机键(thinkpad开启)

    thinkpad哪个是开机键(thinkpad开启)

  • 微信正在使用相机怎么关闭(微信正在使用相机什么意思)

    微信正在使用相机怎么关闭(微信正在使用相机什么意思)

  • 主板短路会有什么现象(主板短路会死机吗)

    主板短路会有什么现象(主板短路会死机吗)

  • 手机跑电用什么办法解决(手机跑电用什么办法解决华为)

    手机跑电用什么办法解决(手机跑电用什么办法解决华为)

  • 微信聊天记录怎么改时间(微信聊天记录怎么恢复)

    微信聊天记录怎么改时间(微信聊天记录怎么恢复)

  • 百度网盘Word文档怎么用Wps打开(百度网盘word文档在线编辑)

    百度网盘Word文档怎么用Wps打开(百度网盘word文档在线编辑)

  • 国外亚马逊怎么开店(国外亚马逊怎么退货)

    国外亚马逊怎么开店(国外亚马逊怎么退货)

  • 接电话时有电话打进来怎么设置(接电话时有电话打进来可以看到)

    接电话时有电话打进来怎么设置(接电话时有电话打进来可以看到)

  • 小米9多重(小米9多重多少kg)

    小米9多重(小米9多重多少kg)

  • volte通话是什么意思如何关闭(电话volte)

    volte通话是什么意思如何关闭(电话volte)

  • 如何删除文档中所有的空行(如何删除文档中多余的页)

    如何删除文档中所有的空行(如何删除文档中多余的页)

  • 以前年度损益调整
  • 发放福利视同销售进项税要转出吗?
  • 个人所得缴税租房减免该怎么弄?
  • 城市维护建设税为什么是流转税
  • 结转上月库存商品余额会计分录
  • 现金股利和现金利润的区别
  • 企业所得税纳税调增调减怎么确定
  • 财政票据可以抵税吗
  • 社保基数超过工资
  • 企业房产税优惠政策2022
  • 物业公司代收供暖费,可以开发票吗
  • 小规模免了增值税怎么办
  • 健身行业的税务政策
  • 资本溢价公积金计算公式
  • 税务机关核定应纳税额的具体程序和方法
  • 进口料件和出口成品的关系
  • 没有销项税进项要交税吗
  • 长期待摊费用多少钱
  • 含税房租
  • 苹果哪些手机有120hz刷新率
  • 调整低电量通知怎么设置
  • 本期填写的适用3减1政策的本期发生额大于
  • 租赁合同维修费用
  • 累计专项扣除比别人的多
  • windows更新暂停怎么恢复
  • wind10画图在哪
  • 销售货物支付运杂费要交增值税吗
  • 企业公益捐赠的意义
  • 领用自产库存商品
  • 若依官网
  • 公司转让债务债权协议
  • 马耳他共和国瓦莱塔福利
  • vue下载安装
  • php字符
  • 政策性搬迁补偿收入
  • 负债大于资产能贷款吗
  • mysqldump 导出数据
  • 租金没有发票可以退税吗
  • 微服务组件面试题
  • 根据银行回单做流水账单
  • 2020信息采集
  • 增值税专用发票丢了怎么补救
  • 注解@entity
  • 房产中介收取的贷款服务费合不合法
  • 金税盘怎么看税收编码版本号
  • 在私立医院就诊能报销吗
  • 电脑买回来可以直接用吗
  • 主营业务收入净额在利润表里怎么看
  • 个税适用税率怎么确定
  • 营改增后建筑业怎么开票
  • 红字发票销项税额账务处理
  • 控制企业的5种方式
  • 包装物报废收回残料
  • 月末结转后应交税费应交增值税一般无余额
  • 到银行货款现金怎么货
  • 销售折让如何核算
  • 印花税怎么进行税种认定
  • 企业生育津贴发放细则
  • 公司怎么变更公司名称
  • sql添加后返回主键
  • centos6.2安装教程
  • freebsd使用wifi
  • 如何删除windows更新文件
  • mac os 应用
  • 电脑如何安装Anaconda
  • window8开机
  • linux怎么禁用命令
  • win7 txt文件属性更改
  • linux服务端
  • win10系统用正版有什么好处
  • linux必知必会
  • 如何正确使用农药芸苔素
  • jquery简单例子
  • javascriptz
  • js 类的继承
  • 退发票操作流程
  • 国家税务总局广州市税务局
  • 福建省国家税务局通用定额发票
  • 北京市地税局第一稽查局郭洪鑫
  • 国,地税纳税申报表是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设