返回信息流以前书上一直看到一个process运行时候分成什么text,data,bss各个section。
今天我用objdump了一下,发现并没有这么多section。text是有的,data和bss都没有。
不知道是为何?
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #9530同步于 2010/10/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
关于elf文件的一个问题
hman
2010/10/13镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
之前用过两下objdump就随便说两句
应该有啊,你用objdump -h能看到各个段,如果objdump -D的话也能找到data的踪迹(大概是disassmble of data之类的说明)
不过,可能看到的东西和预想的不太一样。比如你定义了一个256个元素的全局数据,.out文件应该不会找到那么长一段东西,执行的时候再分配就行了嘛。这中间就设计到elf执行、重定位等问题了。
另外,多说一句,你的这个问题完全可以自己动手。
其实不难找到答案,上网查查,自己看看命令的参数说明,再试试很容易找到答案的。
反而,这样的问题放到论坛里不一定能得到你期望的答复
好吧,是我没有说清楚。 事后我确实用readelf看到了section。
一开始我是用objdump -S a.out看的。我想这个dump出来的应该是整个elf文件的所有东西了,包括了平时讲的.data, .text, .bss等section。
但是我没有看到。 而且我定义了一个全局变量,从汇编代码上来看,那个地址也没有在dump出来的地址空间中。
我是想用objdump -S看一下整个elf文件的安排格式。网上说前面是header,中间是segment header,sections,最后是section header。
但是我用objdump -S看到了其他的一些section,如.init , .end 。
如果用readelf或者objdump -h只能看到这个部门的东东,而不是整个elf格式的样子。
我用二进制的方式也看过a.out,文件的最后确实有.bss的字符串。我就以为objdump可以将整个elf文件全dump出来,看看每个section是在什么地方,elf的格式怎么编排的。而不是就是列出有几个section啊啥的。
不过还是要感谢hobby的批评,我又看了一遍manual
发现用 objdump -DS 就可以dump出来所有section了,不过还是dump不出来section header, segment header。
那我感觉这个看elf的格式是不是只能用readelf来看了?
呵呵 不敢说批评
其实我只是谈谈自己的理解,说说我觉得怎样是更有效的学习和交流方式。
其实大家都是这么过来的,一上来啥都不懂,慢慢的摸到门道之后就能更有效的学习。
另一方面,与其他同学学习和交流也很重要,这也正是我们协会和版面发展的主要目标,这还需要更多像你一样的热心同学多多支持!!
【 在 hman 的大作中提到: 】
: 不过还是要感谢hobby的批评,我又看了一遍manual
: 发现用 objdump -DS 就可以dump出来所有section了,不过还是dump不出来section header, segment header。
: 那我感觉这个看elf的格式是不是只能用readelf来看了?