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

  • 微信图片在电脑上怎么打印出来(微信图片在电脑c盘哪个文件夹)

    微信图片在电脑上怎么打印出来(微信图片在电脑c盘哪个文件夹)

  • 闲鱼动态怎么不让别人看见(闲鱼动态怎么不可见设置)

    闲鱼动态怎么不让别人看见(闲鱼动态怎么不可见设置)

  • 半入耳式耳机和入耳的区别是什么(半入耳式耳机和入耳的区别图片)

    半入耳式耳机和入耳的区别是什么(半入耳式耳机和入耳的区别图片)

  • vivo NEX 3s屏幕是什么材质呢(vivonex3s屏幕是2k屏吗?)

    vivo NEX 3s屏幕是什么材质呢(vivonex3s屏幕是2k屏吗?)

  • 华为matebook13耳机插孔在哪(华为matebook13耳机什么类型)

    华为matebook13耳机插孔在哪(华为matebook13耳机什么类型)

  • 学信网密保问题顺序有要求吗(学信网密保问题设置错误是什么意思)

    学信网密保问题顺序有要求吗(学信网密保问题设置错误是什么意思)

  • 微信电脑版无法接收信息怎么办(微信电脑版无法打开链接)

    微信电脑版无法接收信息怎么办(微信电脑版无法打开链接)

  • 微信不是群主可以@所有人吗(微信不是群主可以发起接龙吗)

    微信不是群主可以@所有人吗(微信不是群主可以发起接龙吗)

  • 1k存储空间能存储多少个英文字符(1k存储空间能存多少)

    1k存储空间能存储多少个英文字符(1k存储空间能存多少)

  • 为什么微信不显示查看接龙(为什么微信不显示在手机界面)

    为什么微信不显示查看接龙(为什么微信不显示在手机界面)

  • 不是操作系统软件的是

    不是操作系统软件的是

  • 想定位对方位置不让她知道(想定位对方位置怎么操作)

    想定位对方位置不让她知道(想定位对方位置怎么操作)

  • 抖音破播放是什么意思(抖音破播放之后再怎么办?)

    抖音破播放是什么意思(抖音破播放之后再怎么办?)

  • 苹果屏幕左边一条竖线(苹果屏幕左边一条线)

    苹果屏幕左边一条竖线(苹果屏幕左边一条线)

  • 华为lon-al00是什么型号(华为手机lon-al00)

    华为lon-al00是什么型号(华为手机lon-al00)

  • 苹果xsmax防水到什么程度(苹果xs max防水视频)

    苹果xsmax防水到什么程度(苹果xs max防水视频)

  • u盘可以一直插在电脑上吗(u盘可以一直插在音响上吗)

    u盘可以一直插在电脑上吗(u盘可以一直插在音响上吗)

  • 退款关闭什么意思(退款关闭意思退款成功了吗)

    退款关闭什么意思(退款关闭意思退款成功了吗)

  • 华为怎么关闭勿扰模式(华为怎么关闭勿触屏模式)

    华为怎么关闭勿扰模式(华为怎么关闭勿触屏模式)

  • 淘宝网店如何上传图片(淘宝网店如何上架产品)

    淘宝网店如何上传图片(淘宝网店如何上架产品)

  • 手机wps怎么打印文件(手机wps怎么打印ppt)

    手机wps怎么打印文件(手机wps怎么打印ppt)

  • wps表格转换为文本(wps表格转换为文本怎么做)

    wps表格转换为文本(wps表格转换为文本怎么做)

  • 微信拒收红包怎么操作(微信拒收红包怎么恢复)

    微信拒收红包怎么操作(微信拒收红包怎么恢复)

  • 乐猫智服有支付牌照吗(乐猫智服怎么帮你代还)

    乐猫智服有支付牌照吗(乐猫智服怎么帮你代还)

  • faceapp为什么用不了(face为啥用不了)

    faceapp为什么用不了(face为啥用不了)

  • 怎么查看QQ空间的秘密(怎么查看qq空间删除的照片)

    怎么查看QQ空间的秘密(怎么查看qq空间删除的照片)

  • Win10怎么自定义侧栏背景? Win10侧栏背景的设置方法(win10怎么自定义开机音乐)

    Win10怎么自定义侧栏背景? Win10侧栏背景的设置方法(win10怎么自定义开机音乐)

  • 【Cesium】vue项目加载3DTileset(.b3dm 格式)(vue+cesium怎么实现地图的加载)

    【Cesium】vue项目加载3DTileset(.b3dm 格式)(vue+cesium怎么实现地图的加载)

  • Node 下 Http Streaming 的跨浏览器实现

    Node 下 Http Streaming 的跨浏览器实现

  • 税务清算需要什么条件
  • 食品增值税专用发票可以退税吗?
  • 企业股利分配政策有哪些
  • 个人住房转让纳税标准
  • 外购货物应抵扣的进项税额税率
  • 进项税当月申报怎么申报
  • 幼儿园收取生活费通知
  • 客户充值
  • 公司收到虚开发票谁承担
  • 小规模纳税人所得税税率
  • 基本生产车间领用周转材料会计分录
  • 工程在建期间土地的摊销如何处理
  • 个税手续费退还时间
  • 本期有进项没有销项需要转出增值税吗?
  • 增值税纳税表销售额的填写
  • 增加注册资本需要多少股东通过
  • 法人股东转让股权涉税
  • 企业支出的资产包括哪些
  • 怎么更正以前年度企业所得税
  • 如何查询所属税务所
  • 小规模普通发票可以抵扣吗
  • 发票冲红后多交多少税
  • 包工不包料都包括什么
  • 房屋租赁公司要交哪些税
  • 购买土地交易费用怎么算
  • 资产减值损失期末余额在哪方
  • 上网的操作
  • 苹果14出来13会下架吗
  • win11更新补丁如何删除
  • 参加活动获得的荣誉怎么写
  • 职工薪酬可能计入什么科目
  • 公司购买货物
  • php获取指定日期是星期几
  • vue数据实时更新
  • php 如何防止接口被刷
  • 营业外收支的内容
  • 小规模纳税人减半征收的六税两费
  • php下载文件夹
  • 2023 年值得关注的 9 个 Web3 发展趋势
  • 动态内存管理
  • PHP+mysql+ajax轻量级聊天室实现方法详解
  • 企业捐赠的资产如何入账
  • 销售旧货和销售使用过的物品税率
  • 购入固定资产的会计处理
  • 个税专项附加扣除金额
  • 什么是服务型
  • 累计折旧怎么做账
  • 弥补以前年度亏损怎么算
  • 高铁票进项抵扣计算错了 怎么办理
  • 福利费用属于哪个部门
  • asp.net mvc图片上传
  • mysql数据库的设计与实现
  • 支付招标代理费的请示
  • 合伙企业分配利润法律依据
  • 纳税人的进项税额怎么算
  • 应付职工薪酬的账务处理
  • 应收利息科目的表述
  • 应付账款主要是什么
  • 企业广告费以后会涨吗
  • 发票 认证抵扣
  • 社保缓缴政策2020
  • 会计里面的管理费用
  • 金税盘的初始密码一般是多少
  • 银行利息增值税发票申请单怎么填
  • 企业如何计算增值税
  • wins9
  • Linux系统防火墙的命令
  • centos如何设置网卡
  • centos怎么配置dns
  • win10系统资源
  • windows查询
  • mac菜单栏不见了
  • css中div怎么用
  • jQuery使用$.ajax进行即时验证实例详解
  • 批处理文件是可执行文件吗
  • unity 角色
  • jquery滚动条滚动到指定位置
  • jquery中用onclick绑定点击事件
  • js动态添加trtd
  • 授课费800元个税要收吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设