Це б / у питання з веб-сайту розробки ОС, але мене викликало цікавість, оскільки я ніде не міг знайти гідного пояснення.
Під час компіляції та зв’язування стоячої програми C ++ за допомогою gcc іноді виникає помилка лінкера на зразок цього:
out/kernel.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
Це, мабуть, тому, що цей символ визначений у libstdc ++, якого немає у вільно стоячому середовищі. Для усунення проблеми просто потрібно десь визначити цей символ:
void *__gxx_personality_v0;
Що приємно, але мені не подобаються речі, які просто магічно працюють ... Тож питання полягає в тому, яка мета цього символу?
-fno-exceptions
. Я додавCPPFLAGS += -fno-exceptions
у свій makefile, і це вирішило помилку.