我发现了一个名为size的命令,它可以给出ELF文件中某个部分的大小。在尝试使用该命令时,我为最简单的C++程序创建了一个输出文件:
int main(){return 0;}
显然我没有定义任何已初始化或未初始化的数据,那么为什么我的BSS和DATA段大小分别为512和8字节?
我认为这可能是因为int main()
,我尝试为下面的C程序创建目标文件:
void main(){}
我还是不理解BSS和DATA段的0值。
是因为这些段被分配了一定大小的内存吗?
编辑- 我原本认为这可能是由于链接库所致,但我的对象是动态链接的,所以这可能不是问题。
objdump --disassemble
命令查看真正的入口点函数。objdump -f
命令将显示包括“起始地址”在内的信息。 - sourcejedifile a.out
的输出表明它是动态链接的ELF,因此我认为没有静态链接的库,但我想我错了。 - Time Travellernm
- 您将看到elf文件中的所有符号。 - filo