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

  • oppok9怎么设置下面三个键(oppor9怎么设置下载权限)

    oppok9怎么设置下面三个键(oppor9怎么设置下载权限)

  • 支付宝万能保险怎么取消(支付宝万能保险是免费的吗)

    支付宝万能保险怎么取消(支付宝万能保险是免费的吗)

  • 花呗怎么查看历史账单(花呗怎么查看历史消费后余额)

    花呗怎么查看历史账单(花呗怎么查看历史消费后余额)

  • 红米k40pro怎么设置全面屏(红米k40pro怎么设置门禁卡)

    红米k40pro怎么设置全面屏(红米k40pro怎么设置门禁卡)

  • 修改电脑时间会有痕迹吗(修改电脑时间会影响微信吗)

    修改电脑时间会有痕迹吗(修改电脑时间会影响微信吗)

  • win7打不开摄像头(win7无法打开摄像头)

    win7打不开摄像头(win7无法打开摄像头)

  • 荣耀30什么时候发布(荣耀30什么时候推送鸿蒙3.0)

    荣耀30什么时候发布(荣耀30什么时候推送鸿蒙3.0)

  • xsmax多大(xsmax手机多大尺寸)

    xsmax多大(xsmax手机多大尺寸)

  • 华为p40pro屏幕是哪家生产的(华为p40pro屏幕是昆仑玻璃吗)

    华为p40pro屏幕是哪家生产的(华为p40pro屏幕是昆仑玻璃吗)

  • 网速变慢是什么原因(网速慢慢变慢是什么原因)

    网速变慢是什么原因(网速慢慢变慢是什么原因)

  • 企鹅号发的视频在哪个平台可以看到(企鹅号发的视频为什么没有播放量)

    企鹅号发的视频在哪个平台可以看到(企鹅号发的视频为什么没有播放量)

  • mt6765相当于麒麟什么处理器(mt6765相当于麒麟多少)

    mt6765相当于麒麟什么处理器(mt6765相当于麒麟多少)

  • 小米连接airpods声音开满都很小(小米连接airpods只有一个响)

    小米连接airpods声音开满都很小(小米连接airpods只有一个响)

  • 华为手机下载成功却安装不了(华为手机下载成功却一直在安装)

    华为手机下载成功却安装不了(华为手机下载成功却一直在安装)

  • siri自动弹出怎么回事(siri老是自己跳出来是什么意思)

    siri自动弹出怎么回事(siri老是自己跳出来是什么意思)

  • 苹果6改密码在哪里修改(苹果6更改密码)

    苹果6改密码在哪里修改(苹果6更改密码)

  • 乐视手机密码忘记了怎么解锁(乐视手机密码忘了怎么刷机)

    乐视手机密码忘记了怎么解锁(乐视手机密码忘了怎么刷机)

  • 快手上传功能禁用怎么办(快手上传功能禁用禁多久)

    快手上传功能禁用怎么办(快手上传功能禁用禁多久)

  • 苹果xs支持30w快充吗(苹果xs支持20w快充充电吗?)

    苹果xs支持30w快充吗(苹果xs支持20w快充充电吗?)

  • 拼多多自动连抽怎么开启(拼多多天天抽奖是真的吗)

    拼多多自动连抽怎么开启(拼多多天天抽奖是真的吗)

  • 怎么查别人手机定位(怎么查别人手机号码)

    怎么查别人手机定位(怎么查别人手机号码)

  • 华为手环能测血压吗(华为手环能测血压和心率吗)

    华为手环能测血压吗(华为手环能测血压和心率吗)

  • 怎么用手机制作手幅(怎么用手机制作文档电子版)

    怎么用手机制作手幅(怎么用手机制作文档电子版)

  • Windows 10禁用全屏优化提高游戏帧数(windows全部禁用)

    Windows 10禁用全屏优化提高游戏帧数(windows全部禁用)

  • 一个简单的网页设计HTML5作业(如何用html编写一个简单的网页)

    一个简单的网页设计HTML5作业(如何用html编写一个简单的网页)

  • 数论笔记(数论电子书下载)

    数论笔记(数论电子书下载)

  • 电费发票隔月开如何做账
  • 增值税专用发票和普通发票的区别
  • 销售费用福利费编码
  • 怎么确定开票项目是否属于经营范围
  • 所得税季报季初从业人数
  • 高铁费可抵扣适用税吗
  • 基本户被冻结怎么缴投标保证金
  • 企业开出的普票和专票对税额有影响吗
  • 企业缴纳增值税会计目录
  • 零食发票能抵税吗
  • 无形资产研究阶段的支出全部费用化
  • 收到政府中小企业发票
  • 来料加工企业的会计处理问题
  • 内账和外账会计哪个简单
  • 资产负债率之比
  • 工程预算调整的主要内容
  • 外来原始凭证是指企业财会部门从外部购入的原始凭证
  • 小型微利企业普惠性减税政策
  • 仓库的租赁费
  • win11玩游戏怎样
  • Remoterm.exe - Remoterm是什么进程 有什么用
  • 什么是集成显卡长什么样
  • php5.4升级到php7
  • 装修材料如何入账
  • 关于政府的话
  • 小企业会计准则适用于哪些企业
  • 劳务公司已开票,可款项未收到,税票多久有效
  • 工商年报经营现金净流量计算公式
  • f12过滤请求
  • vue开发环境配置
  • css基础入门
  • ps橡皮擦不是圆圈了
  • 外购应税消费品的纳税人是谁
  • 保税区里的企业叫什么
  • dede织梦怎么转成zblog
  • 帝国cms怎么调用文章随机段落
  • 什么是代缴代扣
  • access导入到mysql
  • 广告赞助支出能抵扣吗
  • 捐赠 税收
  • 为取得固定资产而发生的什么支出可计入固定资产成本
  • 建筑企业预缴税
  • 收了对方预付款怎么打条
  • 关于幼儿园的会议内容
  • 工地上报销项目有哪些
  • 企业代扣的个人所得税款收入属于哪个会计科目
  • 营改增后物业公司账务处理
  • 废品损失是什么要素
  • 小规模纳税人收到专票后如何处理
  • 预收款退还如何处理
  • 弥补亏损后怎么做账
  • 酒店购买的餐具可以退吗
  • 研发费用如何做分录分析
  • sql语句的优化方式
  • 组建,加入或退出工会都是基于
  • 如何ie8升级到10
  • win8 分屏
  • Windows虚拟内存不足
  • 教程图解
  • mac10.5系统
  • win7更新和安全在哪里
  • 解决win10蓝屏
  • 从哪里看windows是多少位的
  • 红帽企业版更新了吗
  • w10 2021年更新
  • win8开机进不了桌面
  • windows打开
  • react either
  • jqueryanimate动画
  • 关于中秋节的古诗
  • Android roboguice 开源框架使用
  • go 与 python
  • js模拟用户输入
  • Android mediaplayer 白屏
  • 上海附加税税率2023
  • 广东税务局查验
  • 财税咨询服务内容包括
  • 推动税务系统全面从严
  • 京牌车船税网上可以交吗
  • 全款房契税退税需要什么资料
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设