程序员的自我修养

程序员的自我修养:链接、装载与库

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

每个技术专题都配备大量图、表和代码实例,力求将复杂的机制以简洁的形式表达出来。

提供了一个小巧且跨平台的C/C运行库MiniCRT,综合展示了与运行库相关的各种技术。

能将程序的编译和运行过程所涉及的各种技术全面地串连起来介绍的,至今尚未有先例。

覆盖Windows和Linux两个平台,详述应用程序在编译、链接和运行时所发生的各种事项。

学习研究他人的代码是枯燥而耗时的,先行者的经验能避免重复劳动,直指经验和关键。

学会编程“易筋经”,可以开发操作系统、编译器,甚至是开发一种新的程序设计语言。

由一个很小很简单的问题或示例入手,层层剥开、深入挖掘,探究每个机制“怎么做”。

务必理解“为什么这样做”,力求深入浅出、图文并茂,尽力把每一步细节呈现给读者。

内容简介

  《程序员的自我修养:链接、装载与库》主要介绍系统软件的运行机制和原理,涉及在Windows和Linux两个系统平台上,一个应用程序在编译、链接和运行时刻所发生的各种事项,包括:代码指令是如何保存的,库文件如何与应用程序代码静态链接,应用程序如何被装载到内存中并开始运行,动态链接如何实现,C/C运行库的工作原理,以及操作系统提供的系统服务是如何被调用的。每个技术专题都配备了大量图、表和代码实例,力求将复杂的机制以简洁的形式表达出来。本书最后还提供了一个小巧且跨平台的C/C运行库MiniCRT,综合展示了与运行库相关的各种技术。

  《程序员的自我修养:链接、装载与库》对装载、链接和库进行了深入浅出的剖析,并且辅以大量的例子和图表,可以作为计算机软件专业和其他相关专业大学本科高年级学生深入学习系统软件的参考书。同时,还可作为各行业从事软件开发的工程师、研究人员以及其他对系统软件实现机制和技术感兴趣者的自学教材。

章节目录

第1部分 简介

第1章 温故而知新

1.1 从HELLO WORLD 说起

1.2 万变不离其宗

1.3 站得高,望得远

1.4 操作系统做什么

1.5 内存不够怎么办

1.6 众人拾柴火焰高

1.7 本章小结

第2部分 静态链接

第2章 编译和链接

2.1 被隐藏了的过程

2.2 编译器做了什么

2.3 链接器年龄比编译器长

2.4 模块拼装——静态链接

2.5 本章小结

第3章 目标文件里有什么

3.1 目标文件的格式

3.2 目标文件是什么样的

3.3 挖掘SIMPLESECTION.O

3.4 ELF 文件结构描述

3.5 链接的接口——符号

3.6 调试信息

3.7 本章小结

第4章 静态链接

4.1 空间与地址分配

4.2 符号解析与重定位

4.3 COMMON 块

4.4 C相关问题

4.5 静态库链接

4.6 链接过程控制

4.7 BFD 库

4.8 本章小结

第5章 WINDOWS PE/COFF

5.1 WINDOWS 的二进制文件格式PE/COFF 134

5.2 PE 的前身——COFF

5.3 链接指示信息

5.4 调试信息

5.5 大家都有符号表

5.6 WINDOWS 下的ELF——PE

5.7 本章小结

第3部分 装载与动态链接

第6章 可执行文件的装载与进程

6.1 进程虚拟地址空间

6.2 装载的方式

6.3 从操作系统角度看可执行文件的装载

6.4 进程虚存空间分布

6.5 LINUX 内核装载ELF 过程简介

6.6 WINDOWS PE 的装载

6.7 本章小结

第7章 动态链接

7.1 为什么要动态链接

7.2 简单的动态链接例子

7.3 地址无关代码

7.4 延迟绑定(PLT)

7.5 动态链接相关结构

7.6 动态链接的步骤和实现

7.7 显式运行时链接

7.8 本章小结

第8章 LINUX 共享库的组织

8.1 共享库版本

8.2 符号版本

8.3 共享库系统路径

8.4 共享库查找过程

8.5 环境变量

8.6 共享库的创建和安装

8.7 本章小结

第9章 WINDOWS 下的动态链接

9.1 DLL 简介

9.2 符号导出导入表

9.3 DLL 优化

9.4 C与动态链接

9.5 DLL HELL

9.6 本章小结

第4部分 库与运行库

第10章 内存

10.1 程序的内存布局

10.2 栈与调用惯例

10.3 堆与内存管理

10.4 本章小结

第11章 运行库

11.1 入口函数和程序初始化

11.2 C/C运行库

11.3 运行库与多线程

11.4 C全局构造与析构

11.5 FREAD 实现

11.6 本章小结

第12章 系统调用与API

12.1 系统调用介绍

12.2 系统调用原理

12.3 WINDOWS API

12.4 本章小结

第13章 运行库实现

13.1 C 语言运行库

13.2 如何使用MINI CRT

13.3 C运行库实现

13.4 如何使用MINI CRT

13.5 本章小结

附录A

A.1 字节序(BYTE ORDER)

A.2 ELF 常见段

A.3 常用开发工具命令行参考

索引

程序员的自我修养是2009年由电子工业出版社出版,作者潘爱民。

得书感谢您对《程序员的自我修养》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
深入浅出Spring Boot 2.x 电子书
本书章节编排合理,深入浅出地阐述了Spring Boot 2.x的原理与应用,以及当今较为流行的微服务系统经常用到的技术及原理,内容通俗易懂。
代码精进之路:从码农到工匠 电子书
对于很多一直“低头拉车”的程序员来说,这本书能够让你不必"抬头"就能看到未来的出路。
Vim实用技巧 电子书
Vim编辑器100实用技巧,提高编程效率。
SRv6网络编程:开启IP网络新时代 电子书
本书以IP网络发展过程中面临的挑战为切入点,详细介绍了SRv6技术的产生背景、设计思路与实现过程,以及SRv6在传统业务与新兴业务中的应用。以IP技术的发展历史开篇,重点阐述了MPLS和IPv6在网络发展过程中遇到的问题,帮助读者了解SRv6技术带来的变革以及承载的历史使命。详细阐述了SRv6网络编程的原理,包括SRv6的报文头设计与报文转发过程、IGP/BGP/PCEP等针对SRv6的协议扩展、
Python算法详解 电子书
- 以“从入门到精通”的写作方法构建内容,让读者入门容易。 为了使读者能够完全看懂本书的内容,本书遵循“从入门到精通”基础类图书的写法,循序渐进地讲解算法的知识。 - 破解语言难点,以“技术解惑”贯穿全书,绕过学习中的陷阱。 为了帮助读者学懂算法,每章都会有“技术解惑”模块,让读者知其然又知其所以然。 - 书中包含大量典型实例。 书中有195个实例,通过这些实例的练习,读者有更多的实践演练机会。 - 通过QQ群和网站论坛实现教学互动,形成互帮互学的朋友圈。 本书作者为了方便给读者答疑,特地提供了网站论坛、QQ群等技术支持,并且随时在线与读者互动。让大家在互学互帮中形成一个良好的学习编程的氛围。网站名称和群号,详见本书前言部分。