У меня есть простой общий объект со следующим кодом
__attribute__((constructor))
void open_dev(void) {
printf("shared object constructor");
}
void foo(){
printf("In shared object");
}
__attribute__((destructor))
void close_dev(void) {
printf("shared object destructor");
}
У меня есть другой исполняемый файл с именем test , который просто вызывает foo () .когда я запускаю свой тест на устройстве Android, я вижу, что вызывается конструктор, но не деструктор.когда я запускаю тот же тест на собственном linux, скомпилированном с gcc, вызывается деструктор.Я вижу эту проблему только на Linux Android.Может кто-нибудь, пожалуйста, помогите ??
Тот же деструктор вызывается, если я явно выполняю dlopen и dlclose () из mytest, он не вызывается, если процесс завершается нормально.
По сути, я хочу знать, гарантируется ли, что деструкторы общего объекта вызываются, когда мы статически связываем их?