elf文件与符号表

关于符号表:

符号就是全局变量和函数名,符号表中不关注代码中的局部变量,只关注全局变量和函数,分别放在.data. .BSS .text段

符号和符号表的介绍:https://www.jianshu.com/p/bda60193808d

其中使用readelf -s 可查看目标文件的符号表信息

节和段之间的关系:

ELF 是可执行目标文件的一种格式,上计算机系统的时候曾经简略的接触到,这个可执行文件中包含了 代码段,数据段等信息,供程序运行的时候进行调用,但是实在太久没有看到这个东西了,今天又看到了ELF文件的时候,对elf 节和 elf 段的概念很陌生

 

ELF segment 和 section 用上图来解释很恰当,其实就是对于elf文件中一部分相同内容的不同描述映射而已,就是上图红框中标出的内容,就好比一个学院的学生,有人喜欢用一班的学生,二班的学生去描述,也有人用女同学,男同学去描述

make所产生的文件,包括 sub.o/sum.o/test.o/libsub.so/test 等等都是ELF对象文件。至于要知道它们都属于上面三类中的哪一种,我们可以使用 file 命令来查看:

[yihect@juliantec test]$ file sum.o sub.o test.o libsub.so test 
sum.o:     ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped 
sub.o:     ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped 
test.o:    ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped 
libsub.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped 

1) .text section 里装载了可执行代码;

2) .data section 里面装载了被初始化的数据;

3) .bss section 里面装载了未被初始化的数据;

4) 以 .rec 打头的 sections 里面装载了重定位条目;

5) .symtab 或者 .dynsym section 里面装载了符号信息;

6) .strtab 或者 .dynstr section 里面装载了字符串信息;

readelf -s 查看符号表中的内容

你可能感兴趣的:(elf文件与符号表)