Деструктор общего объекта не вызывается в Linux Android - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть простой общий объект со следующим кодом

__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, он не вызывается, если процесс завершается нормально.

По сути, я хочу знать, гарантируется ли, что деструкторы общего объекта вызываются, когда мы статически связываем их?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...