虽然有不足,但是还是不错的
2015-10-04
扣掉一星是因为书中有些笔误,还有一些代码错误。也没记笔记,所以不能贴上勘误表,自己看的时候注意点就是,很容易发现的。
另外,对于局部变量(字符串常量、字符串数组、整形)等在堆栈上的分布讲的不是很细致,不过这些东西自己反汇编一个程序就明白了。
这本书在学校图书馆放了很久没人去借,而且去年的时候还是我向图书馆推荐的此书,几个月后一查询发现图书馆已经把书买来入库了。但是我一直没有用到书中内容,所以一直没借来看。
时间来到2015年9月6号,我把书从图书馆借来放在书架上,准备看,但是一直没看,只翻了一次,就再也没拿下来过。(看借阅记录好像此前只有一个人借过这本书,所以我借来的时候书跟全新的一样,竟然没有翻过的痕迹)
前几天,准确的说是一周前,突然需要看点ELF加载的内容,之前看过《linker and loader》,但是讲的不是很明白。于是从书架上拿下此书开始看。大约是从本周一(9月28号)开始看的吧,断断续续看了一点开头,觉得跟看小说一样,毕竟里面的内容我以前多有涉猎,看起来非常快,一开始的几章还是很简单很熟悉的。
几天后来到了国庆假期,10月1、2、3号我集中精力开始狂看此书,因为我决定速战速决,大四了还要找工作呢,不能把战线拖的太长。所以每天都看三四个小时,把我练口语的时间都挤没了。终于昨晚也就是3号晚上把我需要的章节看完了。一共看完了1、2、3、4、6、10、11章。基本上就是花了三天时间把本书读了个差不多。当然我跳过了C++的相关内容,因为我不太会C++,而且动态链接章节暂时用不到就没看。
总的来说,虽然看几页就能发现书中笔误,但是基本不影响阅读,看完后我以前最迷糊的“重定位”相关知识已经全搞明白了。说实话,我看这本书就是为了看重定位是怎么定位的。其他内容是附带着看看。不过收获还是很大,看得出作者对于底层的知识非常了解,可以想象出他们当时在没有这些参考书的情况下慢慢摸索是花了多少功夫。在此向作者致敬。
这本书的受众主要是使用C语言和C++的系统级开发者,因为讲的东西太过于底层,我也是因为要看进程部分的内核代码所以才用到,至于搞Java的朋友我认为这本书就没必要看了,而应该去看JVM虚拟机机制。
从周围室友那里我也了解了一些前端和移动开发的知识,所以我觉得这本书里的内容对于安卓开发、Web开发、IOS、Java等等一些列非底层开发来说几乎没什么用。看了也会因为用不到而忘掉。
相反,对于有志于向Linux内核提交代码的人来说,这本书非常值得一看,虽然一些知识以前都了解过,但是肯定没有这么系统的串联一次。。内核路漫漫哎,目前内核代码量已经超过1900万行了,想成为一名内核开发者真的是非常难。。。还有很长的路要走。