小编Ing*_*onk的帖子

全局构造函数调用不在.init_array部分

我正在尝试在嵌入式目标(ARM Cortex-M3)上添加全局构造函数支持.让我说我有以下代码:

class foobar
{
    int i;

public:
    foobar()
    {
        i = 100;
    }

    void inc()
    {
        i++;
    }
};

foobar foo;

int main()
{
    foo.inc();
    for (;;);
}
Run Code Online (Sandbox Code Playgroud)

我这样编译:

arm-none-eabi-g++ -O0 -gdwarf-2 -mcpu=cortex-m3 -mthumb -c foo.cpp -o foo.o
Run Code Online (Sandbox Code Playgroud)

当我用objdump查看.init_array部分时,它显示.init_section的大小为零.

我得到一个名为的符号_Z41__static_initialization_and_destruction_0ii.当我反汇编目标文件时,我看到全局构造是在static_initialization_and_destruction符号中完成的.

为什么.init_section中没有将指针添加到此符号?

c++ gcc constructor

9
推荐指数
2
解决办法
8636
查看次数

标签 统计

c++ ×1

constructor ×1

gcc ×1