dlopen не удалось: библиотека libtest.so не найдена

Я пишу проект Android Native, который генерирует исполняемый файл (скомпилированный как с ndk r10e, так и с ndk r12b), и когда я пытаюсь запустить сгенерированный исполняемый файл, он выдает ошибку, что не может его открыть:

dlopen failed: library "libtest.so" not found

Очевидно, что "/my/system/path/libtest.so" существует и имеет правильные разрешения (например, 666).

Это appens только в одном из моих устройств. Я протестировал его более чем на 10 устройствах, и он работает отлично.

Я не могу понять, почему появляется эта ошибка.

Пожалуйста помогите.


person mrpep    schedule 07.10.2016    source источник
comment
Я предполагаю, что libtest.so находится в каталоге /system/lib, верно? Не могли бы вы рассказать нам больше о ваших устройствах. AFAIK Android 6.0 не позволяет использовать нестандартные системные библиотеки в приложениях.   -  person jereksel    schedule 07.10.2016
comment
Извините, /my/system/path/ — это не /system/lib, а общий путь, такой как /data/local/temp или другой. Устройство представляет собой рутированный Android 5.1.1.   -  person mrpep    schedule 07.10.2016
comment
Вы вызываете dlopen с абсолютным путем к библиотеке или просто с именем и ожидаете, что он найдет что-то в локальном каталоге?   -  person Dan Albert    schedule 07.10.2016
comment
Я пробовал сначала с абсолютным путем, а затем просто по имени   -  person mrpep    schedule 12.10.2016


Ответы (1)


Вероятно, самый простой способ понять, что именно происходит, — это использовать strace. Это покажет вам, где он пытается найти ваш libtest.so и почему он его не находит. См. этот ответ, как используйте strace на андроиде.

person UKMonkey    schedule 07.10.2016