'main'函数位于哪里?

6
"

'main' 函数位于哪里?

"
int main() {
    const char *str = "hello world";
    printf("%s\n", str);
}

我知道以下这些地方:

  • .text
  • .data
  • .bss
  • stack
  • heap

我认为答案是.bss,因为我知道 'main' 函数不会被放在其他地方(但我可能错了)。


2
你知道这些部分的含义吗? - Eugene Sh.
2
它在 .text 部分。其他部分用于数据,这是代码。 - Hans Passant
2
C语言中没有这样的东西。你的平台可能会将可执行代码放在.text中,但谁知道呢。 - n. m.
谁知道呢?我必须了解这个概念才能设计操作系统。 - merry-go-round
3
谷歌上的术语是“ELF”。 - StoryTeller - Unslander Monica
显示剩余5条评论
1个回答

8

显然,这超出了C标准的范畴,因为它没有提到任何“sections”。

ELF系统为例,通常所有的代码都在text segment(也称为code segment)中,而main则位于text segment中。您可以使用readelfobjdump命令查看符号所在的位置。例如,如果您检查objdump -S a.out的输出,您可以看到汇编和各种sections。

您可以阅读http://wiki.osdev.org/ELFhttp://www.cs.cmu.edu/afs/cs/academic/class/15213-f00/docs/elf.pdf获取更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接