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

  • oppo手机卸载的软件怎么找回来(oppo手机卸载的软件在哪里)

    oppo手机卸载的软件怎么找回来(oppo手机卸载的软件在哪里)

  • redmi k30pro变焦版和标准版的区别(redmik30pro变焦版价格)

    redmi k30pro变焦版和标准版的区别(redmik30pro变焦版价格)

  • 微信免流量的手机卡(微信免流量的手机卡移动)

    微信免流量的手机卡(微信免流量的手机卡移动)

  • 苹果备忘录可以生成长图吗(苹果备忘录可以统计字数吗)

    苹果备忘录可以生成长图吗(苹果备忘录可以统计字数吗)

  • 鼠标接收器坏了能配一个吗(鼠标接收器坏了还能用吗)

    鼠标接收器坏了能配一个吗(鼠标接收器坏了还能用吗)

  • 什么屏幕会烧屏(什么屏幕烧屏厉害)

    什么屏幕会烧屏(什么屏幕烧屏厉害)

  • 三星显示器触摸开不了的原因(三星显示器触摸屏失灵修复小技巧)

    三星显示器触摸开不了的原因(三星显示器触摸屏失灵修复小技巧)

  • 竞品信息指的是什么(竞品信息收集包括哪些内容)

    竞品信息指的是什么(竞品信息收集包括哪些内容)

  • 小米8se后盖什么材质(小米8se后盖拆解)

    小米8se后盖什么材质(小米8se后盖拆解)

  • net4.0是什么(net4.0和4.6)

    net4.0是什么(net4.0和4.6)

  • 永久封的微信可以解封吗(永久封的微信可以改密码吗)

    永久封的微信可以解封吗(永久封的微信可以改密码吗)

  • 电脑转屏怎么转换快捷(电脑转屏了怎么恢复)

    电脑转屏怎么转换快捷(电脑转屏了怎么恢复)

  • 什么是淘宝旺旺号(淘宝卖家平台)

    什么是淘宝旺旺号(淘宝卖家平台)

  • 天猫精灵怎么连网(天猫精灵怎么连接电脑)

    天猫精灵怎么连网(天猫精灵怎么连接电脑)

  • 手机斗鱼怎么搜索房间号(手机斗鱼怎么搜房间号)

    手机斗鱼怎么搜索房间号(手机斗鱼怎么搜房间号)

  • word怎么添加参考文献(Word怎么添加参考线)

    word怎么添加参考文献(Word怎么添加参考线)

  • 嘀嗒账号解封 教程(嘀嗒账号解封要多久)

    嘀嗒账号解封 教程(嘀嗒账号解封要多久)

  • 三星note10支持45w充电吗(三星note10支持双卡双待吗)

    三星note10支持45w充电吗(三星note10支持双卡双待吗)

  • 宽带不可上网什么原因(宽带显示不可上网是什么问题)

    宽带不可上网什么原因(宽带显示不可上网是什么问题)

  • 微信积分在哪里兑换(微信积分在哪里领)

    微信积分在哪里兑换(微信积分在哪里领)

  • 快手作品删了能恢复吗(快手作品删了能恢复吗视频)

    快手作品删了能恢复吗(快手作品删了能恢复吗视频)

  • ps书皮封面设计怎么做(ps书皮封面设计图怎么做)

    ps书皮封面设计怎么做(ps书皮封面设计图怎么做)

  • 三星g9650是什么手机(三星g9650是什么意思)

    三星g9650是什么手机(三星g9650是什么意思)

  • 虎扑怎么删除自己的评论(虎扑怎么删除自己发的评论)

    虎扑怎么删除自己的评论(虎扑怎么删除自己发的评论)

  • qq星月童话气泡怎么弄(星月童话套装)

    qq星月童话气泡怎么弄(星月童话套装)

  • 会费收入增值税申报
  • 应交土地使用税和应交城镇土地使用税一样吗
  • 债权投资借贷方
  • 外贸公司代理出口退税怎么入账
  • 转账支票和转账凭证
  • 吸收合并控股合并新设合并的区别
  • 什么是企业所得税收入
  • 没有外管证就开具了发票
  • 物流公司一般纳税人和小规模纳税人
  • 车辆处置入账价值包括哪些
  • 所得税季报营业收入本年累计
  • 实收资本的入账金额怎么算
  • 支票发生退票
  • 收取施工队管理费
  • 电厂采购通常采购什么
  • 进项税额转出会计分录月末如何结转
  • 残保金申报有什么用
  • 企业筹建期间可以自己发农民工工资么
  • 运输公司租赁车辆怎么做账
  • 评估报告怎么算合法
  • linux系统开机黑屏怎么办
  • linux如何在终端运行程序
  • 怎样选好布艺沙发
  • 收到银行本票的账务处理
  • 收到过期银行汇票怎么办
  • 营业店面装修费怎么入账
  • ajax调用php接口
  • 应收借方表示什么
  • iis部署javaweb
  • pytorch torch
  • php构造函数重载
  • 有形动产租赁个税是经营所得吗
  • 新建利润表
  • 配件出口可以退税吗
  • 小微企业认定标准 税务
  • 小规模纳税人在什么情况下会成为一般纳税人
  • 小规模纳税人企业所得税2023
  • 分公司非独立核算企业所得税处理
  • mongodb计数
  • mongodb replica set 配置高性能多服务器详解
  • 小微企业认定需要哪些资料
  • 归还股东投资款本息怎么做账
  • 无票收入是怎么算的
  • 开多少平方超市赚钱
  • 营业外收入影响所有者权益吗
  • 一般纳税人抵扣怎么算
  • 计算税前利润时 是否考虑资金成本
  • 公司之前借款没入账现在还款
  • 长期股权投资应计提减值准备的金额
  • 避税唯一安全的方法
  • 摘要界面在哪个位置
  • 企业计提坏账准备形成可抵扣暂时性差异
  • 公户转私户的钱会退回吗
  • 税控抵税怎么做分录
  • 购入固定资产的增值税计入成本吗
  • 本年利润的年末余额
  • 工资代扣工会会费协议
  • 预付调整到其他应付款
  • 汇兑损益是什么凭证类型
  • sqlserver游标的使用场景
  • 常用的sql语句有哪些
  • securedownload是什么意思
  • Win10 Mobile 10536预览版用得越久越卡顿是怎么回事?
  • win10周年纪念版
  • win8 侧边栏
  • centos下载软件并安装
  • Linux系统中如何复制虚拟机
  • nodejs获取post数据
  • jquery异常捕获
  • unity给物体添加重力
  • unity 人物控制
  • 二级联动什么意思
  • 手机截取电脑屏幕
  • js function函数
  • openlayers3示例
  • android模拟器无法运行
  • 国家税务局天津市税务总局官网
  • 农业银行联行号查询系统官网
  • 国家税务总局江西省
  • 公司被税务查账对不上
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设