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

  • 华为手环3pro支不支持ios(华为手环3pro支持微信支付吗?)

    华为手环3pro支不支持ios(华为手环3pro支持微信支付吗?)

  • 苹果电池用量记录怎么删除(苹果电池用量记录怎么隐藏)

    苹果电池用量记录怎么删除(苹果电池用量记录怎么隐藏)

  • 现代操作系统的主要目标是什么(linux操作系统)

    现代操作系统的主要目标是什么(linux操作系统)

  • 微信长图只显示中间(微信长图显示不全)

    微信长图只显示中间(微信长图显示不全)

  • 佳能3680打印机闪黄灯(佳能3680打印机三角黄灯闪)

    佳能3680打印机闪黄灯(佳能3680打印机三角黄灯闪)

  • 网易云升级听歌量为什么不变(网易云升级听歌几分钟算一首)

    网易云升级听歌量为什么不变(网易云升级听歌几分钟算一首)

  • 华为手机怎样给分身微信改图标(华为手机怎样给软件设置密码)

    华为手机怎样给分身微信改图标(华为手机怎样给软件设置密码)

  • 淘宝聊天消息显示感叹号(淘宝聊天消息显示今日在线什么意思)

    淘宝聊天消息显示感叹号(淘宝聊天消息显示今日在线什么意思)

  • 华为型号askaloox(华为型号askal20)

    华为型号askaloox(华为型号askal20)

  • 锂电池多少温度会爆炸(锂电池多少温度会起火)

    锂电池多少温度会爆炸(锂电池多少温度会起火)

  • 被屏蔽的人知道自己被屏蔽了吗(被屏蔽的人知道自己被屏蔽了吗QQ)

    被屏蔽的人知道自己被屏蔽了吗(被屏蔽的人知道自己被屏蔽了吗QQ)

  • win7恢复出厂设置后账户被停用(win7恢复出厂设置后需要密码)

    win7恢复出厂设置后账户被停用(win7恢复出厂设置后需要密码)

  • QQ显示未接听是啥意思了(qq显示未接听是啥意思了)

    QQ显示未接听是啥意思了(qq显示未接听是啥意思了)

  • 苹果7外屏玻璃碎了可以单独换吗(苹果7外屏玻璃碎了可以修复吗)

    苹果7外屏玻璃碎了可以单独换吗(苹果7外屏玻璃碎了可以修复吗)

  • 爱奇艺怎样切换夜间模式(爱奇艺怎样切换语言)

    爱奇艺怎样切换夜间模式(爱奇艺怎样切换语言)

  • 荣耀9x双卡双待吗(荣耀9x双卡还能插存储卡吗)

    荣耀9x双卡双待吗(荣耀9x双卡还能插存储卡吗)

  • 淘宝延长收货什么意思(淘宝延长收货什么意思 点了会怎么样?)

    淘宝延长收货什么意思(淘宝延长收货什么意思 点了会怎么样?)

  • 电脑上怎么调整照片kb(电脑上怎么调整图片的像素和大小)

    电脑上怎么调整照片kb(电脑上怎么调整图片的像素和大小)

  • 华为nove5p耳机孔在哪(华为nove5耳机插孔)

    华为nove5p耳机孔在哪(华为nove5耳机插孔)

  • 淘宝同款便宜的跟贵的怎么选择(淘宝上同款质量一样吗)

    淘宝同款便宜的跟贵的怎么选择(淘宝上同款质量一样吗)

  • 华为p30pro尺寸(华为p30pro尺寸长宽高)

    华为p30pro尺寸(华为p30pro尺寸长宽高)

  •  港版美版和国行有什么区别(港版美版和国行有什么区别)

    港版美版和国行有什么区别(港版美版和国行有什么区别)

  • cpio命令  复制文件到归档包(cp命令复制系统文件/etc/profile)

    cpio命令 复制文件到归档包(cp命令复制系统文件/etc/profile)

  • 什么是所得税税负
  • 境外代扣代缴增值税
  • 计提资产减值准备体现了会计信息质量特征的( )
  • 不是公司员工可以举报公司不交社保吗
  • 劳务服务有什么
  • 劳务公司包工包料的法律法规
  • 非经营性资产包括哪些科目
  • 税务系统 受理
  • 出售多余材料会计科目
  • 非独立核算的分公司可以开票吗
  • 增值税汇总纳税政策文件
  • 出差出了事故怎么处理
  • 公司用货币资金做账
  • 增值税零申报什么意思
  • 未报税会怎么样
  • 学生兼职需要交什么税
  • 工会经费申报网址是什么
  • 应收账款周转天数正常范围
  • 个人所得税0元算不算缴税
  • 商业健康保险税优码
  • 公司长期贷款
  • 固定资产清理会发生什么费用
  • 残保金必须交社保才能领吗
  • 汽车销售私下收客户红包
  • 华为鸿蒙harmonyos官网4.0
  • typecho安装插件
  • php调用sql
  • win10无法运行软件怎么回事
  • rosnmgr.exe - rosnmgr是什么进程 有什么用
  • 发票开出后对方不付款
  • 内部员工租房租金合法吗
  • 委托代销商品的特点及种类
  • 工程材料怎么开票
  • 支出的科目有哪些
  • yolov5 ios
  • framework3.5怎么打开
  • uniapp动态修改pages.json
  • 冰川湾国家公园的冰川不止有白色一种
  • 炫酷登录注册教程
  • convwthn如何定义
  • 新手入门指南
  • php环境搭建apache
  • 集团对子公司拨款的规定
  • 长期借款的主要成本包括
  • js经典案例代码大全
  • element插件安装方法
  • 其他权益工具投资是金融资产吗
  • dedecms源码
  • php增删改查语句
  • 城建税减半从什么时候开始
  • 幼儿园账务处理实务
  • 电子承兑过期超过10天就无法转让吗
  • 无法支付的应付账款摘要怎么写
  • 转入企业银行存款利息分录
  • 固定资产报废如何记账
  • 支付投资者投入的款项
  • 网上报税零申报流程演示2018
  • 小规模纳税人抵扣税控盘增值税怎么申报
  • 财付通入帐中
  • 应付利息属于经营性负债吗
  • 管理费怎么扣除
  • 电脑显示配置windows
  • linux ubuntu安装教程
  • 隐藏的系统
  • aeadisrv.exe
  • 如何配置sendmail
  • dmg是啥文件
  • js实现无缝轮播
  • nodejs内置的包管理器
  • ntp ntpdate
  • 备份多个数据库
  • e87移植
  • [置顶]从lv2开始开挂的原勇者候悠闲的异世界生活
  • 告诉你什么是无限的恐怖日语
  • 怎样学好js中的逻辑
  • 山东网上信访投诉平台
  • 车船税缴费电子凭证
  • 国家税务总局跨区迁移规定
  • 执法事业单位改革最新进展
  • 建筑增值税税率历次调整
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设