[100分]有没有关于binutils的深入的资料?或者深入底层的资料?
李迟
博客专家认证 2010-12-28 11:19:13 最近打了一段时间的酱油,东搞搞西搞搞,但始终离不一基本目标:深入底层。
这个底层并非指与硬件、芯片打交道,并非涉及时序、操作。
这个“底层”以我现在的水平不好定义,这里只能给出一些关键字:静态库、动态库、程序如何加载、ld-linux-so.x、程序地址空间分布、堆、栈、linux平台入口函数和初始化函数……
binutils很久就遇到过了,最开始有印象应该是做LFS时候吧。最近研究了一下linux下的动态库,用过其中的一些工具,如ojbdump、nm、strip、readelf,等等。网上有很多资料,可惜,这些资料大部分都是讲如何使用这些工具、这些工具如何重要,再深入一些的话,就没有了。到官方网站上,也找到一些manual而已,想多点了解readelf输出结果,也没有什么资料介绍,只能靠平时专业英语的感觉理解,比如OJBECT、FUNC、GLOBAL、DEFAULT等等。——谁都知道程序中了很多符号表,但里面的含义、字段似乎就不知道了。
有几本书还是讲得比较好的,比如《Linux性能详解》、《程序员的自我修养》等等。
并非在下钻牛角尖,我只是觉得,作为一个刚出来混的程序员,有必要去了解这些东西——更何况,目前还处于打酱油阶段,何不趁有时间再研究研究?天知道以后还会不会有现今这心情、这时间!
在IBM的devoloperworks看到一句话:
“其实有很多东西只要勤于思考,还是能够自己悟出一些道理的。国外有一些高手就是通过能够大家都能见到的的一点点资料,自己摸索出来很多不为人知的秘密。”
“学习计算机很关键的一点在于一定要富于探索精神,要让自己做到知其然并知其所以然。”
辛苦不怕,动手不怕,师父领进门,修行靠各人,奈何无半点指导,凭自己摸索,漫漫长路,走得坎坷,亦无人知。而且,这么久,还不一样走过来。不过,现在工作了就要注意效率与时间了。
主要是想了解一下进程在main执行之前做了什么、之后又做了什么,谁在做等等问题,但比较少资料情况下感慨一下,大家有什么好的资料不妨介绍一下,100分,不多。