นี่เป็นคำถามมือสองจากไซต์การพัฒนาระบบปฏิบัติการ แต่มันทำให้ฉันสงสัยเพราะฉันไม่สามารถหาคำอธิบายที่ดีได้จากที่ใด
เมื่อรวบรวมและเชื่อมโยงโปรแกรม 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 ของฉันและแก้ไขข้อผิดพลาดได้