Ответ 1
Этот файл doc, кажется, говорит вам, что вы хотите узнать об этих функциях: http://www.nsnam.org/docs/linker-problems.doc
Из того, что я могу получить, gcc создает __static_initialization_and_destruction_0
для каждой единицы перевода, для которой требуются статические конструкторы. Затем он помещает __do_global_ctors_aux
в раздел .ctors
, который затем вызывает __static_initialization_and_destruction_0
на каждой единицы перевода.
Проблема, кажется, намного сложнее, чем это; gcc имеет дело с отдельными объектными файлами в архиве, и я думаю, что именно так они не позволяют компоновщику оптимизировать эти вызовы.