这是一个来自操作系统开发站点的二手问题,但它让我感到好奇,因为我在任何地方都找不到一个像样的解释。
当使用 gcc 编译和链接一个独立的 C + + 程序时,有时会出现下面这样的链接器错误:
out/kernel.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
这显然是因为这个符号是在 libstdc + + 中定义的,在独立的环境中缺少这个符号。解决这个问题只需要在某个地方定义这个符号:
void *__gxx_personality_v0;
这很好,但我不喜欢神奇的东西,所以问题是,这个符号的目的是什么?