Đây là một câu hỏi cũ từ một trang web phát triển hệ điều hành, nhưng nó khiến tôi tò mò vì tôi không thể tìm thấy lời giải thích hợp lý ở đâu.
Khi biên dịch và liên kết một chương trình C ++ tồn tại bằng gcc, đôi khi xảy ra lỗi trình liên kết như thế này:
out/kernel.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
Điều này rõ ràng là do biểu tượng này được định nghĩa trong libstdc ++, biểu tượng này bị thiếu trong môi trường tự do. Khắc phục sự cố chỉ cần xác định biểu tượng này ở đâu đó:
void *__gxx_personality_v0;
Đó là điều tốt đẹp, nhưng tôi không thích những thứ chỉ hoạt động một cách kỳ diệu ... Vậy câu hỏi đặt ra là, mục đích của biểu tượng này là gì?
-fno-exceptions
. Tôi đã thêm vàoCPPFLAGS += -fno-exceptions
tệp makefile của mình và điều đó đã giải quyết được lỗi.