GitHub上超受欢迎程序员书籍:链接、装载与库

前言

事实上,现在市面上和网络上能找到的计算机技术方面的书籍和资料中,什么都很齐全,唯独关于这三个主题(链接、装载与库)的讨论十分稀缺,即使能找到一些也是犹如残缺的典籍,不仅不完整而且很多已经过时了。关于现在通用的Windows和Liunx平台的链接、装载及PE/ELF文件的详细分析,实在很少见。这个领域中,最为完整、也最为权威的莫过于John R. Levine的Linkers &Loaders,这本书我也前前后后通读了好几遍,虽然它对链接和装载方面的描述较为完整,但是过于理论化,对于实际的系统机制描述则过于简略。

GitHub上超受欢迎程序员书籍:链接、装载与库

 

你将学到什么

本书将详细描述现在流行的Windows和Linux操作系统下各自的可执行文件,目标文件格式;普通CIC++程序代码如何被编译成目标文件及程序在目标文件中如何存储;目标文件如何被链接器链接到一起,并且形成可执行文件;目标文件在链接时符号处理、重定位和地址分配如何进行;可执行文件如何被装载并且执行;可执行文件与进程的虛拟空间之间如何映射;什么是动态链接,为什么要进行动态链接;Windows 和Linux如何进行动态链接及动态链接时的相关问题;什么是堆,什么是栈:函数调用惯例;运行库,Glibe 和MSVC CRT的实现分析:系统调用与AP;最后我们自己还实现了一个Mini CRT。

应当具备的基础知识

在本书中,我们尽量避免要求读者有很多的基础知识,但难免有些要求。其中包括对CIC++编程语言的基本了解、x86汇编语言基础、操作系统基本概念及基本编程技巧和计算机系统结构的基本概念。

内容

本书分为4大部分,分别如下:

第1部分 简介

第1章 温故而知新

介绍基本的背景知识,包括硬件。操作系统。线程等。

GitHub上超受欢迎程序员书籍:链接、装载与库

 

第2部分 静态链接

第2章 编译和链接

介绍编译和链接的基本概念和步骤。

GitHub上超受欢迎程序员书籍:链接、装载与库

 

第3章 目标文件里有什么

介绍COFF日标文件格式和源代码鳊译后如何在目标文件中存储。

GitHub上超受欢迎程序员书籍:链接、装载与库

 

第4章 静态链接

介绍静态链接与静态库链接的过程和步骤。

GitHub上超受欢迎程序员书籍:链接、装载与库

 

第5章 Windows PE/COFF

介绍Windows平台的目标文件和可执行文件格式。

GitHub上超受欢迎程序员书籍:链接、装载与库

 

第3部分 装载与动态链接

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

介绍进程的概念、进程地址空间的分布和可执行文件映射装载过程。

GitHub上超受欢迎程序员书籍:链接、装载与库

 

第7章 动态链接

以Linux下的.so共享库为基础详细分析了动态链接的过程。

GitHub上超受欢迎程序员书籍:链接、装载与库

 

第8章 Linux 共享库的组织

介绍Linux下共享库文件的分布和组织。

GitHub上超受欢迎程序员书籍:链接、装载与库

 

第9章 Windows 下的动态链接

介绍Windows系统下DLL动态链接机制。

GitHub上超受欢迎程序员书籍:链接、装载与库

 

第4部分 库与运行库

第10章 内存

主要介绍堆与栈,堆的分配算法,函数调用栈分布。

GitHub上超受欢迎程序员书籍:链接、装载与库

 

第11章 运行库.

主要介绍运行库的概念。CIC++运行库、Glibe 和MSVC CRT、运行库如何实现C++全局构造和析构及以fread()库函数为例对运行库进行剖析。

GitHub上超受欢迎程序员书籍:链接、装载与库

 

第12章 系统调用与API

主要介绍Linux和Windows的系统调用及Windows的API.

GitHub上超受欢迎程序员书籍:链接、装载与库

 

第13章 运行库实现

本章主要实现了一个支持堆、基本文件操作、格式化字符串、基本输入输出、C++ new/delete. C++ string. C++ 全局构造和析构的Mini CRT.

GitHub上超受欢迎程序员书籍:链接、装载与库

 

GitHub上超受欢迎程序员书籍:链接、装载与库

 

这份《程序员的自我思想》电子书籍总共483页,需要完整版的朋友可以以下方式获取。

GitHub上超受欢迎程序员书籍:链接、装载与库

猜你喜欢

转载自blog.csdn.net/JavaBye/article/details/109809925