最新帖子 精华区 社区服务 会员列表 统计排行
主题 : 程序员的自我修养:链接、装载与库介绍及pdf下载
admin 离线
级别: 管理员
UID: 1
精华: 1
发帖: 1000
金币: 526 个
银元: 488 个
铜钱: 7883 个
技术分: 601 个
在线时间: 743(时)
注册时间: 2010-04-21
最后登录: 2018-12-11
楼主  发表于: 2010-04-24   

程序员的自我修养:链接、装载与库介绍及pdf下载


经典指数:
难度指数:

目录

第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 常用开发工具命令行参考 
索引

 媒体评论

这是一本深人阐述链接、装载和库等问题的优秀图书,读来让人愉悦,你从巾可以清晰地了解程序的前世今生,彻底理解敲人的代码如何变成程序任系统中运行。通读本书不管对于开发还是trouble shootin9都会很有帮助。建议每一位希望从事系统开发、或希望更实务地理解操作系统和编译器、或不满足于只写代码的优秀程序员都拥有这样一本书。          ——邹飞,趋势科技(中国)研发中心资深软件要程师 本书从大处着眼,小处着手,以通俗易懂的语言,深入浅出地对系统软件的底层形成机制进行条分缕析,正合药山禅师所谓“高高山顶立,深深海底行”。循着作者的思绪一路走来,有如醍醐灌顶。畅快淋漓。非常高兴有预览此书初稿的宝贵机会,我在浏览书稿和查核相关资料的过程中,学到了很多以前未知或知之不深的内容。          ——冯亮,阿里巴巴(中国)网络技术有限公司运维部系统架构师
书评:
关于《程序员的自我修养》这本书,最初是在和博文的周筠老师MSN上谈起,当时听周老师提及这本书是一本关于链接和装载等系统软件知识的书籍,当时就很感兴趣,因为这方面的书在国内真的见得很少,一方面这种书似乎跟做应用开发的有距离,毕竟如果只是用用C#、Java,似乎没什么必要关心编译器、链接器在做些什么,特别是那么“老土”的C编译器、链接器,另一方面关于这块的知识水比较深,既要有理论深度(得对操作系统、编译原理等有一定了解和学习),又要有工程基础(得实实在在地去研究过GCC、OS,甚至得去读读它们的源码),同时还得有足够的开发经验,至少得有一定在linux上开发系统软件的基础,这样也就难怪很难见到这种“曲高和寡”的书了。 
   
  所以当周筠老师最初推荐我读一遍这本书稿,并告知这本书是两个在校读研的学生写出来的,所以第一感觉对这本书并不抱太大期望,担心这本书又会是一堆理论的堆垒。但在我初初翻看这本书、特别是翻到第二、第三部分时,很是惊讶于其中描写的细致,单是看中间用objdump/readelf分析ELF以及用实际案例来分析和解释符号解析和重定位,就会明白这本书绝不是一本只讲“理论”的形而上,于是决定静下心来仔细阅读,并完成周老师布置给我的“任务”(写些对此书的审阅意见)。 
   
  仔细阅读后,深感这本书是一本联系理论和工程的桥梁,本书深入浅出地对系统底层机制进行了拨丝抽茧,让读者清晰地洞悉程序的前世今生,作为程序员,作为喜欢刨根问题的程序员,读这本书我想至少有两个好处,其一自不必说,一本让你洞悉系统如何链接、装载的优秀图书总是可以让你学到很多东西的,其二则在于,本书作者在写作本书中反映出的认真、执着,以及从小处着手的分析阐述方法,委实让我等值得学习,看书中若干的实例和图表,就可以明白作者在写作过程中的心血(听周老师提及这本书是俞甲子等花费两年时间原创) 
   
  或许有人会说这本书有点太底层了,对于普通程序员的日常工作好像没什么价值,这里我想举个自己的例子来证明理解系统底层的概念是多么重要。当时我们项目(linux平台,gcc开发)中使用到一个第三方library(没有source code),我们的项目是在RHAS4(gcc3.4)上编译的,而library是在Redhat9(gcc2.96)上编译,但library的接口都是标准的C接口,而且按理说gcc的C++对象模型在不同版本间也没什么差异,所以应该可以安全地使用这个library,但结果很不幸地程序crash了,而且是crash在奇怪的STL string函数中,事后的分析证明了那是由于STL模板的弱符号导致符号解析错误,不同的STL库(主程序和library调用了不同的STL)中的函数被覆盖而导致。如果不对linux里弱符号(本书3.5.5,弱符号与强符号)、符号表(本书7.5.3,动态符号表)、符号解析(本书4.2.3,符号解析)等有足够的了解,遇到这样的crash我想一定会抓狂的。此外像soname、动态链接器等,这些对于在linux下开发都是些很必备的知识。 
   
  最后还是说点对这本书的一些负面意见吧;-) 
   
  首先就是书名了,个人不是太喜欢这个主标题,似乎有点太高了,其实我觉得周老师最初给我看的那个书名《深入理解计算机系统软件》要更贴切些,不太明白为什么最后会改名;-) 
   
  其次,从个人角度来看,我觉得这本书对windows部分的介绍不是太必要,其实我更希望这本书能够更深入更全面地对linux的链接和装载进行介绍,比如在多加些linux进程管理、C++及template对编译和链接的影响、gcc的c library更详尽的分析(本书第四部分的crt看起来还是更偏“教学”目的了)等等,可能这样会更专注,当然也可能会丢失一些windows读者,不过也可以把windows的内容另成一书;-)呵呵,这些说来容易,但那又是何等地心血。 
   
  好吧,从内容上,这本书一定值得你一翻,就算你不通读,把第二、第三部分仔细读读一定会很有收获,如果你对系统的机理感兴趣,特别是,如果你是linux C/C++程序员,我如是推荐。 
   
  此外,从书籍的装裱上,博文一贯的高标准让此书不论是封面、纸张,还是排版,都堪称一流,当属一本可撑台面的书架点缀

本书下载地址:http://ishare.iask.sina.com.cn/f/10540809.html
wubaobao 离线
级别: 菜鸟
UID: 1007
精华: 0
发帖: 93
金币: 0 个
银元: 10 个
铜钱: 425 个
技术分: 0 个
在线时间: 1(时)
注册时间: 2011-01-10
最后登录: 2011-01-10
沙发  发表于: 2011-01-10   
thanks
tempname2001 离线
级别: 菜鸟
UID: 1547
精华: 0
发帖: 7
金币: 0 个
银元: 40 个
铜钱: 65 个
技术分: 0 个
在线时间: 1(时)
注册时间: 2011-03-02
最后登录: 2011-03-15
板凳  发表于: 2011-03-02   
不错!!谢谢分享!!
seanluo 离线
级别: 菜鸟
UID: 1970
精华: 0
发帖: 3
金币: 0 个
银元: 10 个
铜钱: 65 个
技术分: 0 个
在线时间: 0(时)
注册时间: 2011-03-27
最后登录: 2011-03-27
地板  发表于: 2011-03-27   
真是不错,这本书我也在找
xumike 离线
级别: 菜鸟
UID: 3459
精华: 0
发帖: 4
金币: 0 个
银元: 10 个
铜钱: 70 个
技术分: 0 个
在线时间: 0(时)
注册时间: 2012-04-20
最后登录: 2016-03-25
4楼  发表于: 2012-04-20   
谢谢分享
tianshan2008 离线
级别: 菜鸟
UID: 3569
精华: 0
发帖: 43
金币: 0 个
银元: 25 个
铜钱: 115 个
技术分: 0 个
在线时间: 7(时)
注册时间: 2012-04-25
最后登录: 2012-08-27
5楼  发表于: 2012-04-28   
谢谢分享
det1984 离线
级别: 菜鸟
UID: 31174
精华: 0
发帖: 2
金币: 0 个
银元: 40 个
铜钱: 40 个
技术分: 0 个
在线时间: 6(时)
注册时间: 2014-02-17
最后登录: 2016-10-30
6楼  发表于: 2014-03-06   
谢谢分享
风漾 离线
级别: 荣誉会员
UID: 45475
精华: 0
发帖: 13
金币: 0 个
银元: 10 个
铜钱: 115 个
技术分: 0 个
在线时间: 11(时)
注册时间: 2018-01-05
最后登录: 2018-03-24
7楼  发表于: 01-05   
感谢!!!!
描述
快速回复

批量上传需要先选择文件,再选择上传
认证码:

验证问题:
printf("%d", 83)
按"Ctrl+Enter"直接提交