Фаза инициализации зависит от платформы.
В случае Linux динамически загружаемые библиотеки могут иметь специально объявленные символы, которые автоматически вызываются dlopen()
при загрузке библиотеки.
См. Справочную страницу для dlopen(3)
, раздел Устаревшие символы init () и fini () для получения дополнительной информации.
Статические инициализаторы неявно помечены как __attribute__((constructor))
, поэтому в общем случае вам не нужно делать ничего особенного, чтобы они вызывались при загрузке разделяемой библиотеки. Я подозреваю, что это то же самое или похожее на других платформах.