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

  • ipad2021是全贴合屏幕吗(ipad2021全贴合屏吗)

    ipad2021是全贴合屏幕吗(ipad2021全贴合屏吗)

  • 腾讯会议怎么关闭别人的声音(腾讯会议怎么关闭麦克风)

    腾讯会议怎么关闭别人的声音(腾讯会议怎么关闭麦克风)

  • 钉钉数据怎么移到新手机(钉钉记录怎么迁移)

    钉钉数据怎么移到新手机(钉钉记录怎么迁移)

  • 腾讯课堂分屏情况下算时间吗(腾讯课堂分屏可以看到吗)

    腾讯课堂分屏情况下算时间吗(腾讯课堂分屏可以看到吗)

  • win7输入密码后黑屏(win7输入密码后重启)

    win7输入密码后黑屏(win7输入密码后重启)

  • 电脑无线网络显示太阳(电脑无线网络显示字体乱码)

    电脑无线网络显示太阳(电脑无线网络显示字体乱码)

  • 微信申诉显示无须申诉(微信账号申诉显示无需申诉)

    微信申诉显示无须申诉(微信账号申诉显示无需申诉)

  • 电池槽被电池腐怎么办(电池槽锈蚀怎么处理)

    电池槽被电池腐怎么办(电池槽锈蚀怎么处理)

  • 十六进制和十进制转换(十六进制和十进制哪个大)

    十六进制和十进制转换(十六进制和十进制哪个大)

  • 连接网络身份验证出现问题怎么回事(连接网络身份验证出问题)

    连接网络身份验证出现问题怎么回事(连接网络身份验证出问题)

  • 照片1mb是多少kb(照片1mb是多少px)

    照片1mb是多少kb(照片1mb是多少px)

  • xr截屏快捷键(xr苹果截屏快捷键)

    xr截屏快捷键(xr苹果截屏快捷键)

  • 微店子账号有什么用(微店 子账号)

    微店子账号有什么用(微店 子账号)

  • 知道qq密码怎么跳过手机验证(知道QQ密码怎么改手机号)

    知道qq密码怎么跳过手机验证(知道QQ密码怎么改手机号)

  • vivoy5s手机没有显示灯吗(vivoy5s手机没有后指纹)

    vivoy5s手机没有显示灯吗(vivoy5s手机没有后指纹)

  • 滴滴拼车有电子发票吗(滴滴拼车有小票吗)

    滴滴拼车有电子发票吗(滴滴拼车有小票吗)

  • ipad能插存储卡吗(ipad能插内存卡不)

    ipad能插存储卡吗(ipad能插内存卡不)

  • airpods使用方法(airpods使用方法图解)

    airpods使用方法(airpods使用方法图解)

  • ips和tft屏有什么区别(ips屏和tft屏哪个好)

    ips和tft屏有什么区别(ips屏和tft屏哪个好)

  • 安装包怎么拷贝到u盘(安装包怎么拷贝到手机根目录)

    安装包怎么拷贝到u盘(安装包怎么拷贝到手机根目录)

  • qq很久没登 怎么恢复(qq很久没登 怎么登不上去)

    qq很久没登 怎么恢复(qq很久没登 怎么登不上去)

  • 华为手环如何开机(华为手环如何开机关机)

    华为手环如何开机(华为手环如何开机关机)

  • 苹果x描述文件在哪里(苹果X描述文件怎么安装)

    苹果x描述文件在哪里(苹果X描述文件怎么安装)

  • 苹果手机电池多少毫安(苹果手机电池多少钱一个)

    苹果手机电池多少毫安(苹果手机电池多少钱一个)

  • 微信支付手机号码怎么更改(微信支付手机号信息确认提醒是什么意思)

    微信支付手机号码怎么更改(微信支付手机号信息确认提醒是什么意思)

  • 什么是所得税税负
  • 持有至到期投资核算内容
  • 利息调整的计算公式
  • 发票只能全部冲开吗
  • 小企业会计准则没有以前年度损益调整科目
  • 股权转让1元转让
  • 员工个人无息借款违法吗
  • 收到公司退货会计分录
  • 累计折旧借贷方向分录
  • 租房免租是什么意思
  • 收到款未开发票挂账入什么科目?
  • 应付债券利息调整科目理解
  • 小规模有限公司注销麻烦吗
  • 个人营业税是什么意思
  • 公司一般户走账要交税吗
  • 价格调节基金税率和计税依据
  • 农产品收购发票上的买价含税吗
  • 广告服务增值税差额征税
  • 2019小规模纳税人增值税起征点
  • 向境外企业付外汇
  • 企业报税的详细流程期限为
  • 公司注销其他应收款怎么冲平
  • 个人独资企业查账征收个人所得税汇算清缴
  • 购房房产税如何支付
  • 去年的财务费用忘记帐能入今年的账吗?
  • 产值税收是什么意思
  • msmpeng.exe是什么进程
  • 增值税一般纳税人资格登记表
  • 已确认坏账又收回账面价值会减少?
  • linux怎样安装
  • h5适配iphonex
  • Discuz!X中SESSION机制实例详解
  • 违约金的增值税税率
  • pytorch f
  • 报销差旅费会计凭证
  • php curl_multi_init
  • 购房名义提取公积金
  • 办公室设计费计入什么
  • vue3使用高德地图
  • php读取文件内容
  • lincom命令
  • 委托第三方收款合法吗
  • 营业执照贴印花税票吗
  • 发票网上申领需要多长时间
  • 分公司财务负责人要求
  • 经审计的财务报表是否要会计师事务所盖章
  • SQL查询中in和exists的区别分析
  • sql server 附加
  • 股东分红要不要纳税?
  • 税控系统技术维护费税率
  • 营业外收入月末怎么处理
  • 可供出售金融资产可以转为交易性金融资产吗
  • 购进材料无发票会计分录
  • 社保年度汇算清缴怎么做
  • 业务招待算什么费用
  • 盈余和利润是不是一个概念
  • 高新企业认定条件2022上海
  • 什么是结账?结账前要做哪些准备工作?
  • sql server2008启动
  • Windows Server 2003下DHCP服务器的安装与简单配置图文教程
  • 主板各个系列详解
  • 微软推出copilotpro订阅
  • win8升级win10系统 激活
  • linux怎么看历史记录
  • 老旧的诗琴五个琴谱大全
  • linux文件latin1转换为utf
  • red hat linux怎么用
  • ie10变成ie8
  • win10提醒功能
  • 车钥匙失灵了10秒教你快速解决
  • javascript标准
  • 命令行创建虚拟机
  • shell 查找文件并赋值shell变量
  • python设计gui
  • 使用jQuery Ajax 请求webservice来实现更简练的Ajax
  • Easyui 之 Treegrid 笔记
  • 教你学python
  • 如何打印高速公路电子发票
  • 长沙个体户怎么给员工交社保
  • 五证合一后还需要去税务局吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设