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

  • 微信拍一拍功能怎么使用(微信拍一拍功能在哪里关闭)

    微信拍一拍功能怎么使用(微信拍一拍功能在哪里关闭)

  • 手机开视频对方听不到声音(手机开视频对方看不到我怎么办)

    手机开视频对方听不到声音(手机开视频对方看不到我怎么办)

  • 怎样删除拼多多购物好友(怎样删除拼多多好评)

    怎样删除拼多多购物好友(怎样删除拼多多好评)

  • 微博被屏蔽的人知道自己被屏蔽了吗(微博被屏蔽的人还能在我的发表的评论下评论我吗)

    微博被屏蔽的人知道自己被屏蔽了吗(微博被屏蔽的人还能在我的发表的评论下评论我吗)

  • 小米10变焦多少倍(小米10变焦能力)

    小米10变焦多少倍(小米10变焦能力)

  • wps带圈字符在哪里(wps带圈字符在哪手机)

    wps带圈字符在哪里(wps带圈字符在哪手机)

  • 苹果114g用不了怎么回事(为什么苹果114g网络满格却连接不了)

    苹果114g用不了怎么回事(为什么苹果114g网络满格却连接不了)

  • 华为mate30上面的两个孔是什么(华为mate30上面的扬声器)

    华为mate30上面的两个孔是什么(华为mate30上面的扬声器)

  • 模糊预览图是什么意思(模糊浏览图什么意思)

    模糊预览图是什么意思(模糊浏览图什么意思)

  • 暂时无法接通请稍后再拨是什么意思

    暂时无法接通请稍后再拨是什么意思

  • 酷我账号能几个人用(酷我音乐一个会员账号可以登陆多少台设备)

    酷我账号能几个人用(酷我音乐一个会员账号可以登陆多少台设备)

  • 路由器有个5g是什么意思(路由器有个5g信号)

    路由器有个5g是什么意思(路由器有个5g信号)

  • 华为不是全面屏手机有哪些(华为哪款手机不是全面屏)

    华为不是全面屏手机有哪些(华为哪款手机不是全面屏)

  • 交换机是一种什么设备(交换机是一种什么)

    交换机是一种什么设备(交换机是一种什么)

  • 域名的长度限制(域名总长不得超过255个字符)

    域名的长度限制(域名总长不得超过255个字符)

  • 怎么制作生日视频照片加音乐(怎么制作生日视频投放到电视)

    怎么制作生日视频照片加音乐(怎么制作生日视频投放到电视)

  • 为什么airpods充不上电(为什么AirPods充电盒有电但不给耳机充电)

    为什么airpods充不上电(为什么AirPods充电盒有电但不给耳机充电)

  • 手机唤醒功能怎么设置(手机唤醒功能在哪)

    手机唤醒功能怎么设置(手机唤醒功能在哪)

  • 密封线内的花纹怎么弄(密封线内的花纹叫什么)

    密封线内的花纹怎么弄(密封线内的花纹叫什么)

  • word2010的word选项在哪(word2010各选项卡的功能有哪些)

    word2010的word选项在哪(word2010各选项卡的功能有哪些)

  • oppoa57怎么弄时间(oppo手机怎么设时间)

    oppoa57怎么弄时间(oppo手机怎么设时间)

  • 闲鱼卖家延长收货在哪(闲鱼卖家延长收货)

    闲鱼卖家延长收货在哪(闲鱼卖家延长收货)

  • 搜狗搜索如何设置小窗口(搜狗搜索引擎设置)

    搜狗搜索如何设置小窗口(搜狗搜索引擎设置)

  • 【CSS】轮播图案例开发 ( 基本设置 | 子绝父相 | 浏览器水平居中 | 圆角设置 | 绝对定位居中设置 )(轮播图效果用css怎么实现)

    【CSS】轮播图案例开发 ( 基本设置 | 子绝父相 | 浏览器水平居中 | 圆角设置 | 绝对定位居中设置 )(轮播图效果用css怎么实现)

  • 公司代缴个人所得税做账
  • 等线补交以前年度附加税会计分录是?
  • 超率累进税率定义
  • 建筑企业开票都开什么
  • 租赁设备出口怎么处理?
  • 预缴税款的完税证明单
  • 企业股权无偿划转是否征税
  • 给企业供货都有哪些渠道
  • 劳务发票可以做费用吗怎么做
  • 纳税人首次办税补充信息表怎么填
  • 企业所得税季报填报说明
  • 工商年报填错了能改吗
  • 通讯费补贴如何领取
  • 母子公司划转房产怎么办
  • 证券投资基金管理人的职权
  • 固定资产投资成本的回收与实物更新
  • 跨期费用会计处理
  • 交通运输服务增值税税率
  • 企业捐赠如何入账
  • 发票金额小于之前的金额
  • mac辅助功能键盘
  • 签证费会计分录
  • 旅游费用账务处理
  • 网速怎么限制10mb以内
  • 缴纳公积金个人没有扣款怎么回事
  • 小规模纳税人的企业所得税税率
  • 提示内存不足
  • 划入账户金额
  • FUXA个人学习总结(一)
  • 酒店的原材料和包装
  • 圣三一教堂英文
  • Yii2 rbac权限控制之菜单menu实例教程
  • Joomla调用系统自带编辑器的实现方法
  • centos php7.4
  • 前端get请求传数组
  • 大数据找工作好找吗
  • 审图费谁出
  • 政府返回税款是否计入收入
  • 企业所得税汇算清缴
  • 被投资的公司注销后投资公司怎么处理
  • 电子商务公司怎么做账比较合适
  • mongodb主从复制原理
  • mongodb skip数据量大
  • 数据库 sql优化
  • 商贸公司分录大全
  • 主营业务收入的明细科目怎么写
  • 红字发票账务处理需冲回成本吗?
  • 销售费用主要账户包括
  • 股权支付费用是什么意思
  • 小企业核算方式选独立核算
  • 债券溢价摊销有什么影响
  • 进项发票已入账进项税,但是未抵扣怎么办
  • 房屋租赁公司装修费会计分录
  • 新企业的创建
  • 专栏设计模板
  • sql server数据库文件的扩展名是
  • SQL中exists的使用方法
  • 开启 windows server
  • CentOS安装配置adb环境
  • xp系统怎么修改图标和文字大小
  • ubuntu wine安装的软件怎么运行
  • sm56hlpr.exe - sm56hlpr是什么进程
  • ati2sgag.exe进程安全吗 ati2sgag进程信息查询
  • linux wc命令如何实现
  • regloadr.exe - regloadr是什么进程 有什么用
  • win7 如何截屏
  • win7硬盘访问权限怎么解除
  • win8怎么看windows
  • jquery获取本地ip
  • unity 手册
  • Android触摸事件回调方法
  • android开发地图应用
  • window.close(); 关闭浏览器窗口js代码的总结介绍
  • shell 递归
  • unity字符串
  • unity特色
  • 3、BluetoothChat之BluetoothChatService.java
  • services的翻译
  • jquery图片上传
  • 税收公司法人有风险么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设