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

  • oppoa55什么处理器(oppoa55性能怎么样)

    oppoa55什么处理器(oppoa55性能怎么样)

  • 支付宝跑腿怎么加入(支付宝跑腿怎么收费)

    支付宝跑腿怎么加入(支付宝跑腿怎么收费)

  • 小米10s能用120w快充吗(小米10s能用磁吸充电宝吗)

    小米10s能用120w快充吗(小米10s能用磁吸充电宝吗)

  • Mate 40 Pro支持多少倍变焦(mate40Pro支持多少个5G频段)

    Mate 40 Pro支持多少倍变焦(mate40Pro支持多少个5G频段)

  • qq头像换了没反应(为什么qq头像明明换了可是显示不出来)

    qq头像换了没反应(为什么qq头像明明换了可是显示不出来)

  • 为什么我把好友加进了微信,却依然显示非朋友(为什么我把好友拉黑还可以发信息给他)

    为什么我把好友加进了微信,却依然显示非朋友(为什么我把好友拉黑还可以发信息给他)

  • 小米8青春版可以更新mlul11吗(小米8青春版可以玩原神吗)

    小米8青春版可以更新mlul11吗(小米8青春版可以玩原神吗)

  • 华为sa/nsa双模是什么意思(华为5gsansa双模是什么意思)

    华为sa/nsa双模是什么意思(华为5gsansa双模是什么意思)

  • 为什么ipad微信和手机内容不同步(为什么iPad微信消息不同步)

    为什么ipad微信和手机内容不同步(为什么iPad微信消息不同步)

  • qq访客记录删除了对方还能看见吗(qq访客记录删除不了怎么办)

    qq访客记录删除了对方还能看见吗(qq访客记录删除不了怎么办)

  • 华为agsw09是什么型号(agsw09是华为哪一款)

    华为agsw09是什么型号(agsw09是华为哪一款)

  • 微信信息发不出去显示感叹号(微信信息发不出去显示过于频繁怎么回事)

    微信信息发不出去显示感叹号(微信信息发不出去显示过于频繁怎么回事)

  • win10怎么设置麦克风增强(Win10怎么设置麦克风权限)

    win10怎么设置麦克风增强(Win10怎么设置麦克风权限)

  • 蓝牙耳机能不能分开用(蓝牙耳机能不能充一晚上)

    蓝牙耳机能不能分开用(蓝牙耳机能不能充一晚上)

  • realme Q上市时间(realmeq系列新机)

    realme Q上市时间(realmeq系列新机)

  • 小米20000充电宝怎么拆(小米20000充电宝真假辨别)

    小米20000充电宝怎么拆(小米20000充电宝真假辨别)

  • 补手机号码卡号变吗(补手机卡号要钱吗)

    补手机号码卡号变吗(补手机卡号要钱吗)

  • 苹果手机怎么一边打电话一边录音(苹果手机怎么一键关闭所有程序)

    苹果手机怎么一边打电话一边录音(苹果手机怎么一键关闭所有程序)

  • 云闪付怎么改手机号码(云闪付怎样更改手机号)

    云闪付怎么改手机号码(云闪付怎样更改手机号)

  • vivoy93手机返回键在哪(vivo手机设置返回)

    vivoy93手机返回键在哪(vivo手机设置返回)

  • 怎么把照片的背景换掉(怎么把照片的背景虚化)

    怎么把照片的背景换掉(怎么把照片的背景虚化)

  • 窗口最小化快捷键是什么?(使窗口最小化的快捷键)

    窗口最小化快捷键是什么?(使窗口最小化的快捷键)

  • 关于yolov5的一些说明(txt文件、训练结果分析等)(yolov5 workers)

    关于yolov5的一些说明(txt文件、训练结果分析等)(yolov5 workers)

  • 小规模纳税人收普票和专票有什么区别
  • 小规模纳税人销售农产品税率是多少
  • 已抵扣进项税额转出怎么申报
  • 印花税的计提
  • 科目余额表怎么导出
  • 发票上有字迹可以拿去作废吗
  • 红字信息表撤销失败B80095
  • 安全生产费计提没用可以冲吗
  • 工程款预付账款的账务处理
  • 保险公司赔款可以用子女的二类卡吗
  • 委托加工的账务处理
  • 财务费用利息收入借方为负数是什么意思
  • 本月开的发票次月预缴如何做会计分录呢?
  • 存货周转率 高
  • 仓库产品出库到货时间
  • 不够起征点免缴的增值税如何做税务处理?
  • 一般纳税人只交进项税吗
  • 收到联营单位投入的设备一台
  • 委托贷款对方单位不还
  • 国税代开增值税专票开错了如何处理?
  • 同一地级行政区范围内举例
  • 发票作废了还能查验吗
  • 土地增值税的纳税人是在我国境内
  • 预计产品质量保证损失是什么意思
  • 小规模纳税人公司注销流程及费用
  • 筹办期间的筹办费用支出
  • 最新双色球开奖号码
  • 腾讯手游助手使命召唤怎么滑铲
  • php curl_multi_init
  • PHP:is_executable()的用法_Filesystem函数
  • php的fopen
  • 应纳税所得额的意思
  • php数据统计分析
  • 特定业务计算的应纳税所得额是指
  • 支票沾水
  • mysql分表数量取决于什么
  • C语言中指针变量指向字符串时是有效字符的长度吗
  • 税控盘减免税款结转会计分录
  • 企业和银行对账多久对一次
  • 财务制度备案信息是不是可以不填
  • 区块管理办法
  • dedecms默认用户名
  • 注册一个公司没有流水可以吗
  • 推广服务费可以抵扣吗
  • 资产负债表的种类
  • 沙石料进项发票
  • 软件开发企业怎么结转成本
  • 什么情况没有排卵期
  • 赔付支出包括
  • 发工资用个人账户还是公司帐户
  • 避险功能是什么意思
  • 公司向法人借款需要交税吗
  • 税前利息为什么这么高
  • 建筑发票可以一次性抵扣吗
  • 成本费用利润率一般在什么范围
  • SQL中exists的使用方法
  • 微信公众平台在哪里打开
  • windows无法启动wlanautoconfig
  • chrome浏览器81.0
  • svchosl.exe - svchosl是什么进程 有什么作用
  • win7开始菜单在哪个文件夹
  • Win7系统如何打开磁盘管理工具
  • win7系统如何将插孔设置为ac97前面板
  • virtualbox开启虚拟化
  • linux操作系统配置网络
  • Android与OpenCV2.4.4(2013最新)搭建图像处理框架
  • node.js javascript
  • bs cs架构
  • css-div
  • python第三方库在哪下载
  • WWW封装共享 [复制链接]
  • jquery设置禁用
  • 充电显示调整差额是什么意思
  • 基于python的
  • 个体经营所得申报密码怎样设置
  • 郑州地方税务局网站官网
  • 山东省2023年医改方案
  • 重庆电子税务局app下载
  • 个人转让住宅需要缴纳什么税
  • 扬州退契税政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设