ELF格式文件的问题

内核编译和嵌入式产品的设计与开发
回复
laky373155210
帖子: 27
注册时间: 2009-08-04 13:53

ELF格式文件的问题

#1

帖子 laky373155210 » 2009-08-04 14:12

关于ELF格式文件中,BSS文件是不分配空间的,要等到运行时才分配空间。我想问,比如说局部为初始化静态变量 int static local_var, 它在编译生成目标文件后事放在哪个section的??难道不是在data section吗? 放在bss section中的话为什么又不分配空间给它,不分配空间怎么可能能放置的下啊??请哪位高手帮忙解答,thanks
laky373155210
帖子: 27
注册时间: 2009-08-04 13:53

Re: ELF格式文件的问题

#2

帖子 laky373155210 » 2009-08-04 14:25

哪位兄弟帮忙,急~
头像
command
帖子: 306
注册时间: 2007-10-14 0:50
来自: GUCAS

Re: ELF格式文件的问题

#3

帖子 command » 2009-08-04 21:35

bss不占用文件的空间,只是未初始化的数据用来占内存地址空间的,未初始化的变量在生成的目标文件中不占用空间,只有在运行的时候才分配内存(也就是为bss分配空间)。
你上面的local_var就放在bss section中,不分配空间那时因为分配空间也没用,分配的空间里放什么数据呢?所以像这种未初始化的数据在程序运行时才分配空间,此时按照各种系统的规定初始化这些变量。程序在用这些变量之前需要为它们再次初始化(你不可能用没有初始化的变量,因为不知道系统把它们初始化成什么数据了),此时就可以在固定的内存地址引用该变量了。
OS: Debian GNU/Linux
Version: lenny
Kernel: 2.6.36
Xorg: 1.4.2
CPU: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
HD: 320G SATA
Memory: 2G DDRIII
Graphics:Mobility Radeon HD 3450
laky373155210
帖子: 27
注册时间: 2009-08-04 13:53

Re: ELF格式文件的问题

#4

帖子 laky373155210 » 2009-08-05 10:15

那就是说,bss section其实是没有实际内容的,只是通过sysbol table 等section来“描述”它确实存在而已了?
头像
command
帖子: 306
注册时间: 2007-10-14 0:50
来自: GUCAS

Re: ELF格式文件的问题

#5

帖子 command » 2009-08-05 11:05

bss没有实际内容,符号表存储了程序定义的变量,未初始化的变量在程序被载入内存时在bss分配的内存空间中初始化。bss也是一个section,在elf的section header table结构中定义它的位置。
OS: Debian GNU/Linux
Version: lenny
Kernel: 2.6.36
Xorg: 1.4.2
CPU: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
HD: 320G SATA
Memory: 2G DDRIII
Graphics:Mobility Radeon HD 3450
laky373155210
帖子: 27
注册时间: 2009-08-04 13:53

Re: ELF格式文件的问题

#6

帖子 laky373155210 » 2009-08-06 8:51

command 写了:bss没有实际内容,符号表存储了程序定义的变量,未初始化的变量在程序被载入内存时在bss分配的内存空间中初始化。bss也是一个section,在elf的section header table结构中定义它的位置。
thank you. 我明白了。
回复