文档章节

读《程序员的自我修养》有感---编译&静态链接

Explorer0
 Explorer0
发布于 2017/09/09 18:55
字数 383
阅读 171
收藏 0

精选30+云产品,助力企业轻松上云!>>>

    编译型的语言程序,需要经过大体的编译、链接、装载三个步骤,也就是源代码->机器指令(文件),单独的指令文件(带有符号引用)->整体的指令文件(符号已解析),指令文件->实例进程三个过程,这是概略的说。下图可以给出一个稍微具体的过程概览

    在汇编之后,得到一个目标文件(obj,.o格式),大体如图所示由于每个编译得到的目标文件都或多或少地有引用到外部文件符号(变量/函数等),所以在目标文件中此时符号的地址还是待定状态(由0x00000000或者其他立即数代替),而静态链接就是将各个目标文件整合并确定各个待定符号的具体地址,从而成为可执行文件。具体分为两个关键步骤:

  1. 空间与地址分配:扫描所有的输入目标文件,获得他们各个段的长度、属性和位置,之后合并相同段,计算出新段的长度和位置,并且将所有符号表合并为一个全局符号表
  2. 符号解析与重定位:使用第一步收集到的信息,读取输入目标文件中的重定位信息,进行符号解析与重定位、调整代码中的地址等(地址分为绝对和相对)
Explorer0
粉丝 4
博文 40
码字总数 23159
作品 0
厦门
其他
私信 提问
加载中
请先登录后再评论。
第五周读书笔记——读《程序员的自我修养》有感

读《程序员的自我修养》有感 花了几天时间,研读了《程序员的自我修养——链接、装载与库》。个人感觉它在操作系统的底层机制和运行原理可谓是一本好书。可惜个人修为不够、根底太浅,对Lin...

osc_xf69gbe7
2018/04/05
2
0
LINUX-动态链接与静态链接对比(动态库和静态库)

一、库的基础概念: 在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进...

sssssuuuuu666
2017/12/14
0
0
从零开始UNIX环境高级编程(7):进程环境

0. 引言 在学习进程控制前,先了解进程运行的环境,如:main函数是如何被调用的;命令行参数是如何传递给新程序的;程序在内存空间中是什么样的结构;进程的终止方式等。 1. main函数 1.1 程...

伤口不该结疤
2017/04/24
0
0
郑州哪里可以开住宿费发票

135-3050-7261保-真,可-先-开-验,陈-晨。链接与装载是一个比较晦涩的话题,大家往往容易陷入复杂的细节中而难以看清问题的本来面目。从本质上讲各个系统的编译、链接、装载过程都是大同小异...

幵嘌溦fp2090
04/07
0
0
编译链接是如何得到可执行文件的呢?

盘古开天辟地!我们写了个C语言源文件,那从源文件到可执行程序这中间又发生了什么?编译,链接这些概念又是什么意思?带着对这些问题的好奇,我查了一些资料。其中,主要参考的是《程序员的...

osc_4o5tc4xq
2019/10/11
2
0

没有更多内容

加载失败,请刷新页面

加载更多

智慧旅游海内外现况详情及发展对策

所谓的智慧旅游,便是“智慧地球”和“智慧城市”二者在旅游层面上所展开的实际应用,是伴随着科技进步的发展,信息化管理的提升,从而造成的旅游信息化管理升级。智慧旅游是“智慧地球”的物...

osc_04b0bwu2
25分钟前
11
0
Fiddler 使用fiddler无法抓取苹果手机https请求问题解决方案

使用fiddler无法抓取苹果手机https请求问题解决方案 by:授客 QQ:1033553122 测试环境 Win10 Fiddle4 IPhone6s 问题描述 使用fiddler抓取IPhone6s时,发现无法捕获数据包问题,如下: 解决方...

osc_52r4y6wv
27分钟前
13
0
【Study】 TCP/IP协议 -- 计算机网络之传输层篇(03)

1.传输层 传输层概述: 传输层是管理端到端的通信连接。 传输层之间的通信其实是进程与进程之间的通信,使用端口来标记不同的网络进程。 2.传输层协议 传输层主要有两种协议:TCP和UDP协议。...

osc_3ytpwpyb
28分钟前
9
0
【Study】 TCP/IP协议 -- 计算机网络之应用层篇(04)

应用层包含的协议: TCP与UDP协议的使用场景: 1.DNS详解 DNS:Domain Name SyStem(域名系统) DNS服务是把容易理解的域名转换为计算机中能进行TCP/IP协议通讯的IP,再进行网络的通讯:(I...

osc_bwy4ep83
30分钟前
9
0
浪潮边缘服务器支持中国联通首批5G白盒UPF测试

浪潮边缘服务器支持中国联通首批5G白盒UPF测试 近日,中国联通网络技术研究院联合浪潮在内的三家产业合作伙伴,共同启动了白盒UPF功能和N4接口的兼容性验证测试工作。本次测试的成功标志着N...

osc_zitca8hu
31分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部