Ini adalah pertanyaan bekas dari situs pengembangan OS, tetapi membuat saya penasaran karena saya tidak dapat menemukan penjelasan yang layak di mana pun.
Saat mengompilasi dan menautkan program C ++ yang berdiri sendiri menggunakan gcc, terkadang kesalahan penaut seperti ini terjadi:
out/kernel.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
Ini tampaknya karena simbol ini didefinisikan di libstdc ++, yang tidak ada di lingkungan yang berdiri sendiri. Memperbaiki masalah hanya perlu mendefinisikan simbol ini di suatu tempat:
void *__gxx_personality_v0;
Mana yang bagus, tapi saya tidak suka hal-hal yang bekerja secara ajaib ... Jadi pertanyaannya adalah, apa tujuan dari simbol ini?
-fno-exceptions
. Saya menambahkanCPPFLAGS += -fno-exceptions
ke makefile saya, dan itu menyelesaikan kesalahan.