【发布时间】:2010-11-19 06:22:53
【问题描述】:
我正在编写一些 C++ 代码,但我遇到了一个困扰我一段时间的问题...假设我在 Linux 主机上使用 GCC 编译 ELF 目标,全局静态在哪里构造函数和析构函数调用了吗?
我听说在 crtbegin.o 中有一个函数 _init,在 crtend.o 中有一个函数 _fini。这些是crt0.o调用的吗?或者动态链接器是否真的检测到它们在加载的二进制文件中的存在并调用它们?如果是这样,什么时候它真正调用它们?
我主要想知道,这样我就可以了解在我的代码在运行时加载、执行和卸载时幕后发生的事情。
提前致谢!
更新:我基本上是想弄清楚构造函数被调用的一般时间。我不想根据这些信息在我的代码中做出假设,这或多或少是为了更好地了解我的程序加载时在较低级别发生的事情。我知道这是特定于操作系统的,但我已尝试在此问题中缩小范围。
【问题讨论】:
标签: c++ gcc static global constructor