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

  • 秘乐短视频里面的秘宝是(秘乐短视频怎么没了)

    秘乐短视频里面的秘宝是(秘乐短视频怎么没了)

  • wps怎样替换文字(wps2019怎么替换文字)

    wps怎样替换文字(wps2019怎么替换文字)

  • 小米为什么下架小米9(小米为什么下架了霸王锁体)

    小米为什么下架小米9(小米为什么下架了霸王锁体)

  • 内存条擦了也开不了机(内存条擦擦就能开机)

    内存条擦了也开不了机(内存条擦擦就能开机)

  • 锂电池进水会爆炸吗(锂电池进水爆炸)

    锂电池进水会爆炸吗(锂电池进水爆炸)

  • OPPO怎么把锁屏时间调成黑色(oppo怎么把锁屏时间变成横的)

    OPPO怎么把锁屏时间调成黑色(oppo怎么把锁屏时间变成横的)

  • 华为30s怎么设置返回键(华为30s怎么设置视频美颜)

    华为30s怎么设置返回键(华为30s怎么设置视频美颜)

  • 电话权限允许后会怎样(电话权限允许后再次关闭会怎么样)

    电话权限允许后会怎样(电话权限允许后再次关闭会怎么样)

  • hddled接口在主板哪里(主板 hdd接口)

    hddled接口在主板哪里(主板 hdd接口)

  • 耳机只能听到旋律听不清歌词(耳机只能听见)

    耳机只能听到旋律听不清歌词(耳机只能听见)

  • 芒果TV的弹幕在哪里(芒果tv的弹幕在哪里调)

    芒果TV的弹幕在哪里(芒果tv的弹幕在哪里调)

  • tag al00是华为什么型号(trt一al00华为什么型号)

    tag al00是华为什么型号(trt一al00华为什么型号)

  • 转转卖出去钱多久到账(转转卖出后多久能收到钱)

    转转卖出去钱多久到账(转转卖出后多久能收到钱)

  • 抖音换昵称有影响吗(抖音换昵称会影响权重吗)

    抖音换昵称有影响吗(抖音换昵称会影响权重吗)

  • 虎牙直播回放怎么没了(虎牙直播回放怎么下载手机)

    虎牙直播回放怎么没了(虎牙直播回放怎么下载手机)

  • 苹果xs max长度多少cm(苹果xs max长多少)

    苹果xs max长度多少cm(苹果xs max长多少)

  • qq精确查找是怎么找的(qq精确查找怎么知道我名字)

    qq精确查找是怎么找的(qq精确查找怎么知道我名字)

  • word2013稿纸设置在哪(word2013稿纸设置不见了)

    word2013稿纸设置在哪(word2013稿纸设置不见了)

  • miui11上滑搜索怎么关闭(小米11上滑搜索)

    miui11上滑搜索怎么关闭(小米11上滑搜索)

  • 参考文献怎么加入word(参考文献怎么加编号)

    参考文献怎么加入word(参考文献怎么加编号)

  • 短信怎么退出亲情号码(短信怎么退出亲情号)

    短信怎么退出亲情号码(短信怎么退出亲情号)

  • qq闪图怎么查看第二次(qq如何查看闪图)

    qq闪图怎么查看第二次(qq如何查看闪图)

  • 运动手环的开机键在哪(运动手环的开机键在哪里设置)

    运动手环的开机键在哪(运动手环的开机键在哪里设置)

  • x27视频美颜怎么调(x27视频美颜怎么开怎么找不到)

    x27视频美颜怎么调(x27视频美颜怎么开怎么找不到)

  • 8p有没有nfc(8plus有没有无线充电)

    8p有没有nfc(8plus有没有无线充电)

  • 在win7系统中右击我的电脑找不到管理选项怎么办?(windows7中右键的作用)

    在win7系统中右击我的电脑找不到管理选项怎么办?(windows7中右键的作用)

  • Kaldi的简单介绍和基本使用说明(kaldi官网)

    Kaldi的简单介绍和基本使用说明(kaldi官网)

  • 备用金要用发票做账吗
  • 融资租赁和经营性租赁区别
  • 发行债券的会计要素
  • 捐赠的所得税怎么处理
  • 商场扣点收入如何纳税
  • 无形资产原值变动账务处理
  • 付城镇土地使用税是多少
  • 所得税汇算清缴分录怎么做
  • 增值税税收返还资料
  • 增值税普通发票和普通发票的区别怎么交税
  • 代扣代缴税种有几个
  • 取得专用发票不交增值税
  • 建筑业简易计税税率
  • 以前工程发票如何抵扣
  • 支出税费
  • 企业增值税征收时间
  • 返利发票税率
  • 办理银行承兑汇票贴现的会计分录
  • 企业合并的增值税处理
  • adv举例
  • 业务招待费进项税额转出表二
  • vcpkgsrv.exe是什么进程
  • 公司员工生病看望的红包能入公司账吗
  • 税后讲课费的个税由谁承担
  • php7.2编译安装
  • 巧克力山介绍
  • 计算利润要扣除企业所得税吗
  • axios入门
  • laravel访问路由方式
  • php页面刷新代码
  • php base64 编码与解码实例代码
  • devtools vue
  • 2023年最新最全税率表
  • python设置断点
  • python语言接收信息的内置函数
  • 计提坏账准备的前提条件
  • 人力资源公司的招聘专员怎么样
  • 公司处置已使用4年多的汽车,怎么增值税申报
  • uniapp组件使用
  • 详解PostgreSQL 语法中关键字的添加
  • 冲以前年度管理费用
  • 红字转账凭证怎样录入
  • 股东以无形资产入股是否需要缴纳个税
  • 代扣代缴附加税怎么做账
  • 建筑行业异地预缴税率
  • 代收第三方补偿什么意思
  • 印花税减免税额怎么填
  • 学校固定资产账记法
  • 公司应收票据增加意味着什么
  • sqlserver怎么用sql创建表
  • XP系统升级WIN7系统
  • Windows Server 2008关闭闲置状态的IDE通道
  • 苹果mac录制屏幕
  • Linux x86_64下安装Flash Player 9
  • 自动锁定系统
  • ubuntu搭建hexo
  • win8怎么查看ip地址
  • win10系统如何屏蔽弹窗广告
  • windows8装windows10,文件会丢失吗
  • Win10 Redstone 14295更新推送:QQ会不时崩溃
  • [视频大小超过限制,无法查看]怎么打开
  • 虚拟内存系统盘
  • jquery的validate前端表单验证
  • [置顶]游戏名 TentacleLocker
  • inline-block
  • jquery$符号
  • 安卓摄像头设置在哪里
  • 圆形图表分析怎么做
  • jquery中的css方法
  • javascript indexOf方法、lastIndexOf 方法和substring 方法
  • jquery中遍历指定的对象和数组是哪个方法
  • jquery写下拉框
  • android 自定义actionbar
  • 新中国税务历史
  • 苏州市总工会主要领导
  • 国家税务江苏税务总局官网
  • 江苏电子税务局客服电话
  • 北京市地方税务局
  • 多缴税款可以抵顶以后欠费的税款吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设