내가 nm
출력이 기능 수 (전역 정적 개체) C++ 파일로 컴파일 한 것입니다 : 그것은 무엇g ++ __static_initialization_and_destruction_0 (INT, INT) -이
00000000 t _Z41__static_initialization_and_destruction_0ii
__static_initialization_and_destruction_0(int, int) /* after c++filt */
입니다? 내가이 함수 (그리고 __cxa_atexit()
를 호출)의 생성을 해제 할 수 __cxa_atexit()
전화 .ctors
및 .dtors
섹션에 모든 생성자와 소멸자 호출을 넣을 것인가? 내가 grok 수 있습니다 무엇에서 http://www.nsnam.org/docs/linker-problems.doc
은, gcc를 호출 할 수있는 정적 생성자가 필요합니다 모든 번역 단위에 대한 __static_initialization_and_destruction_0
를 만듭니다
g ++에는'-fno-use-cxa-atexit' 명령 행 옵션이 있지만 도움이 될 것이라고 생각하지 않습니다. 마치'atexit()'가'cxa_atexit()'대신에 사용되는 것처럼 보입니다. 아마도 더 좋은 질문은 g ++가'.ctors'와'.dtors' ELF 섹션에 생성자와 소멸자 호출을두기보다는'__static_initialization_and_destruction_0()'을 생성하는 이유입니다. 아마도 거기에 좋은 이유가있을 것입니다. – Void