Questa è una domanda di seconda mano da un sito di sviluppo del sistema operativo, ma mi ha incuriosito poiché non sono riuscito a trovare una spiegazione decente da nessuna parte.
Durante la compilazione e il collegamento di un programma C ++ indipendente utilizzando gcc, a volte si verifica un errore del linker come questo:
out/kernel.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
Questo è apparentemente perché questo simbolo è definito in libstdc ++, che manca in un ambiente indipendente. La risoluzione del problema richiede semplicemente la definizione di questo simbolo da qualche parte:
void *__gxx_personality_v0;
Il che è carino, ma non mi piacciono le cose che funzionano magicamente ... Quindi la domanda è: qual è lo scopo di questo simbolo?
-fno-exceptions
. Ho aggiuntoCPPFLAGS += -fno-exceptions
al mio makefile e questo ha risolto l'errore.