位置: 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手机怎么显示sim卡名称(oppo手机怎么显示年月日和时间)

    OPPO手机怎么显示sim卡名称(oppo手机怎么显示年月日和时间)

  • 支付宝农场种菜在哪儿(支付宝农场要种多久)

    支付宝农场种菜在哪儿(支付宝农场要种多久)

  • 举报微信好友他知道吗(举报微信好友有什么后果)

    举报微信好友他知道吗(举报微信好友有什么后果)

  • 快手商家号必须认证吗(快手商家号必须是本人吗)

    快手商家号必须认证吗(快手商家号必须是本人吗)

  • 钉钉的回放会过期吗(钉钉回放有效期多久)

    钉钉的回放会过期吗(钉钉回放有效期多久)

  • 已下单是发货了吗(已下单是发货了吗怎么查)

    已下单是发货了吗(已下单是发货了吗怎么查)

  • 手机的充电口芯片歪了(手机的充电口芯片叫什么)

    手机的充电口芯片歪了(手机的充电口芯片叫什么)

  • 万能钥匙连接上wifi却不能上网(万能钥匙连接上网络不可使用)

    万能钥匙连接上wifi却不能上网(万能钥匙连接上网络不可使用)

  • 红米k30可以插内存卡吗(redmi k30能不能插内存卡)

    红米k30可以插内存卡吗(redmi k30能不能插内存卡)

  • 电脑网络被禁用了怎么打开(电脑无法连接wifi网络是怎么回事)

    电脑网络被禁用了怎么打开(电脑无法连接wifi网络是怎么回事)

  • 常见的网络操作系统有(常见网络操作系统有哪些)

    常见的网络操作系统有(常见网络操作系统有哪些)

  • itunes怎么样备份(用itunes怎么备份)

    itunes怎么样备份(用itunes怎么备份)

  • word2019怎么做目录(word2019做目录的完整步骤)

    word2019怎么做目录(word2019做目录的完整步骤)

  • 华为p30支持防抖吗(华为p30防抖功能怎么设置)

    华为p30支持防抖吗(华为p30防抖功能怎么设置)

  • 未接通是啥意思(未接和未接通的区别)

    未接通是啥意思(未接和未接通的区别)

  • 手表计步器怎么用(手表计步器怎么同步到微信)

    手表计步器怎么用(手表计步器怎么同步到微信)

  • 怎样区分airpods一代和二代(怎样区分airpods二代三代)

    怎样区分airpods一代和二代(怎样区分airpods二代三代)

  • 苹果xs机身尺寸厘米(苹果xs的手机尺寸)

    苹果xs机身尺寸厘米(苹果xs的手机尺寸)

  • vogal00是华为什么型号(华为手机vogal00什么意思)

    vogal00是华为什么型号(华为手机vogal00什么意思)

  • 苹果商店找不到探探(苹果商店找不到微信软件是怎么回事)

    苹果商店找不到探探(苹果商店找不到微信软件是怎么回事)

  • 魅族ba621是什么型号(魅族ba621是什么型号手机)

    魅族ba621是什么型号(魅族ba621是什么型号手机)

  • 如何查看电脑是什么系统?(如何查看电脑是什么牌子)

    如何查看电脑是什么系统?(如何查看电脑是什么牌子)

  • 新手小白如何租用GPU云服务器跑深度学习(怎么租一个月)

    新手小白如何租用GPU云服务器跑深度学习(怎么租一个月)

  • 浅谈人工智能(AI)(浅谈人工智能时代财务会计向管理会计的转型)

    浅谈人工智能(AI)(浅谈人工智能时代财务会计向管理会计的转型)

  • 税控是干什么用的
  • 公司给员工租的宿舍怎么交税
  • 小规模在税务局开的专票已交税,如何在税务平台申报
  • 电子承兑被退回在哪里
  • 人工费用的核算例题
  • 递延所得税资产是什么
  • 不动产租赁服务的税率是多少
  • 新政府会计制度下属于负债类科目的是
  • 销售自产设备税率
  • 存货不同入账基数怎么算
  • 内部收据可以做入账处理吗?
  • 餐厅的市场
  • 银行汇兑计入哪个会计科目?
  • 发票密码区超出还能用吗
  • 小规模企业申请破产流程
  • 税务登记时要财务确认吗
  • 无租使用房产如何征收企业所得税
  • 交通运输服务增值税税率
  • 清算财产分配会计分录
  • 房地产预缴税金附加可以计提吗
  • 出售交易性金融资产的记账凭证
  • 会计监督作用
  • 行政事业单位职工体检依据
  • 政府与事业单位会计
  • cpu天梯图,最新
  • avcodec是什么意思
  • Proxmox ve(PVE) 显示CPU和硬盘温度、UPS信息
  • 公司转让自建厂房怎么办
  • win10点搜索
  • xwizard.exe是什么
  • 罗汉松的养殖方法剪枝视频
  • win7资源管理器叫什么
  • 未注销的坏账可以转出吗
  • 代码简单图案
  • python的Django框架
  • 小糖是谁
  • 代销手续费怎么开票
  • 应付职工薪酬包括哪些二级科目
  • 购入固定资产怎么做账务处理
  • 发票升位需要什么资料
  • 利用职务之便谋取私利是什么罪
  • mongodb用法
  • centos7阿里云源
  • 广东高速公路过路费收费标准
  • 海关缴款书能重开吗
  • 库存现金总分类账
  • c#窗体类属性和方法
  • 无法偿付的应付账款计入什么科目政府会计
  • 兼职人员的个税怎么计算
  • 企业捐赠自产产品的所得税处理
  • 预收账款指的是什么意思
  • 预包装销售是什么意思
  • 顺流交易为什么也要减
  • 工会经费为0是不用申报的?
  • 主营业务收入分为
  • 现金折扣与商业折扣的计算
  • 净利润和毛利润的区别公式
  • mysql视图语句
  • sql server 2019自定义安装教程
  • sql查询方法有哪些
  • linux命令实现
  • windows10x预览版
  • ubuntu20.04.1安装
  • win10周年更新版是什么意思
  • mac使用命令
  • linux find命令详解xargs
  • win8怎么设置用户头像
  • linux设置静态
  • w7系统序列号怎么查
  • 递归怎么调用
  • dos cat命令
  • cocos2d schedule
  • Python分析学校四六级过关情况
  • 贝塞尔曲线生成器
  • jquery cookie存取
  • 请问在javascript程序中
  • Java如何获得集合里的元素
  • 海关编码查询 商品编码查询
  • 四川国税局局长是谁
  • 车辆购置税计入固定资产一起折旧吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设