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

  • 实用的技巧来增加网站的流量(增长最有效的方法)

    实用的技巧来增加网站的流量(增长最有效的方法)

  • 趁着年轻,赶紧去实现你的梦想(趁着年轻赶紧挣钱)

    趁着年轻,赶紧去实现你的梦想(趁着年轻赶紧挣钱)

  • 小米空气净化器怎么连接wifi(小米空气净化器重置滤芯)

    小米空气净化器怎么连接wifi(小米空气净化器重置滤芯)

  • ppt里怎么插页码(ppt里面怎么插页码)

    ppt里怎么插页码(ppt里面怎么插页码)

  • realme电池百分比在哪里设置方法(realme电池百分比在哪里)

    realme电池百分比在哪里设置方法(realme电池百分比在哪里)

  • 允许快捷指令打不开(允许快捷指令打开的软件)

    允许快捷指令打不开(允许快捷指令打开的软件)

  • qq无法直接查看文件(qq图片怎么办)

    qq无法直接查看文件(qq图片怎么办)

  • 荣耀v30和荣耀v30p区别?(荣耀v30和荣耀v30por)

    荣耀v30和荣耀v30p区别?(荣耀v30和荣耀v30por)

  • 苹果8p辅助圆球怎么设置(iphone8 辅助圆点设置)

    苹果8p辅助圆球怎么设置(iphone8 辅助圆点设置)

  • 华为m5和m5青春版区别(华为m5和m5青春版保护套通用吗)

    华为m5和m5青春版区别(华为m5和m5青春版保护套通用吗)

  • 自己发的微信朋友圈占内存吗(自己发的微信朋友圈怎么看不到了)

    自己发的微信朋友圈占内存吗(自己发的微信朋友圈怎么看不到了)

  • window截屏的快捷键是什么(window截屏快捷键)

    window截屏的快捷键是什么(window截屏快捷键)

  • 苹果11没有耳机接口怎么听歌(苹果11没有耳机弹窗)

    苹果11没有耳机接口怎么听歌(苹果11没有耳机弹窗)

  • 触屏不灵敏是什么原因造成的(触屏不灵敏是什么跟地线原因造成的呢)

    触屏不灵敏是什么原因造成的(触屏不灵敏是什么跟地线原因造成的呢)

  • tp5620和5660区别(tp5600和5620区别)

    tp5620和5660区别(tp5600和5620区别)

  • ie浏览器网址是多少(哪款浏览器什么网站都能打开)

    ie浏览器网址是多少(哪款浏览器什么网站都能打开)

  • 乐视手机怎么拆开后盖(乐视手机怎么拆开后盖换电池)

    乐视手机怎么拆开后盖(乐视手机怎么拆开后盖换电池)

  • 为什么挂完电话会放歌(为什么挂完电话手机会有音乐播放)

    为什么挂完电话会放歌(为什么挂完电话手机会有音乐播放)

  • 小米盒子怎么设置屏保(小米盒子怎么设置开机直达)

    小米盒子怎么设置屏保(小米盒子怎么设置开机直达)

  • oppogps在哪里(oppoa11gps在哪里)

    oppogps在哪里(oppoa11gps在哪里)

  • 手机怎样截百度地图(手机如何在百度上截图快捷键)

    手机怎样截百度地图(手机如何在百度上截图快捷键)

  • 诺基亚怎么开机(老款诺基亚怎么开机)

    诺基亚怎么开机(老款诺基亚怎么开机)

  • 淘宝电子兑换券能退吗(淘宝电子兑换券买家怎么确定收货收货)

    淘宝电子兑换券能退吗(淘宝电子兑换券买家怎么确定收货收货)

  • 同一个wifi别人能用我不能用呢(同一个wifi别人网速快我网速慢)

    同一个wifi别人能用我不能用呢(同一个wifi别人网速快我网速慢)

  • 移动网络信息刷新频率(移动网络信息刷新频率是什么意思)

    移动网络信息刷新频率(移动网络信息刷新频率是什么意思)

  • Vue3-Pinia的基本使用

    Vue3-Pinia的基本使用

  • 平价转让股权如何做
  • 清卡抄税报税顺序
  • 运输服务属于生产劳务吗
  • 往来票据如何开具
  • 机械租赁属于什么分类
  • 出口退税网上服务中心app
  • 个人所得税生产经营所得税率
  • 技术成果投资入股企业所得税递延纳税备案表
  • 以前年度损益调整会计分录
  • 资产划转涉税解读
  • 新准则会计
  • 用友如何取消月末结转
  • 经营租赁是主营业务收入吗
  • 申请补贴费用怎么写
  • 路桥年费税额抵扣账务处理怎么做?
  • 第三方支付付款方式
  • 贷款和应收款项在活跃市场中没有报价
  • 本期有进项没有销项需要转出增值税吗?
  • 房地产开发企业资质管理规定
  • 通用机打发票上面为什么不体现税率
  • 进项大于销项的分录怎么写
  • 劳务费税率公式是什么
  • 增值税如何确认
  • 设立独立核算的销售机构的筹划
  • 公司对公账户可以转私人账户多久到账
  • 归还银行贷款怎么做分录
  • 出口免抵退申报期限最新政策解读
  • 免税店购物需要满足什么条件
  • 报税残疾人保障金怎么算
  • 公司出售已经提完折旧的机器
  • 股派发红利是涨还是跌
  • 如何管理和维护企业微信客户
  • vue.min.js 本地引入
  • 餐饮定额发票能报销吗怎么报销
  • php 解压
  • php 自定义函数
  • 无形资产转让账务怎么做
  • 报税系统清卡成功状态
  • python 远程控制
  • ps闪退是什么原因win11
  • 银行对账单冲正的单据在财务软件哪里找
  • 帝国cms插件编写教程
  • 收到厂家返利如何计算成本
  • 无票收入需要缴纳文化事业建设税吗
  • 个人独资企业购入设备可以一次性计提吗
  • 不动产在建工程领用原材料进项税额可以抵扣吗
  • 收款人是否应当承担还款责任
  • 购买商品属于什么费用
  • 税控抵税怎么做分录
  • 月末一次加权平均和移动加权平均的区别
  • win10 impact
  • windows 08
  • centos 拷贝
  • 请问usb是什么意思啊
  • 禁止Windows 打游戏怎么办
  • win7系统玩游戏
  • 电脑pc的操作系统叫什么
  • win7系统运行速度提升
  • mac如何打印文件
  • libproj.so
  • 特效添加
  • Android游戏开发教程
  • linux自动重启程序脚本
  • css下margin、padding、border、background和font缩写示例
  • 批处理查找字符中含有等号的子串
  • python抓取软件界面数据
  • unity rp
  • javascript中的函数如何理解
  • 浏览器检测js代码
  • js的实现原理
  • android数据存储实验报告
  • 轻松实现的英文
  • javascript数据类型有哪些
  • delphi7教程
  • 挂车买保险是怎么买的
  • 是否一般纳税人怎么查
  • 西宁市房屋维修基金收费标准2021
  • 营转非的政策
  • 珠海地区电话区号
  • 写给税务局的表扬信
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设