Esta é uma pergunta de segunda mão de um site de desenvolvimento de sistema operacional, mas me deixou curioso, pois não consegui encontrar uma explicação decente em lugar nenhum.
Ao compilar e vincular um programa C ++ independente usando gcc, às vezes ocorre um erro de vinculador como este:
out/kernel.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
Aparentemente, isso ocorre porque esse símbolo é definido em libstdc ++, que está ausente em um ambiente independente. Para resolver o problema, basta definir este símbolo em algum lugar:
void *__gxx_personality_v0;
O que é legal, mas eu não gosto de coisas que simplesmente funcionam magicamente ... Então a questão é: qual é o propósito deste símbolo?
-fno-exceptions
. Eu adicioneiCPPFLAGS += -fno-exceptions
ao meu makefile, e isso resolveu o erro.