Второе, что я обеспечил, это то, что выравнивание сегментов ELF поддерживает размер страницы памяти 16 КБ. Я использовал команду LLVM-objdump-18 в моем машине Ubuntu Linux и запустил следующую команду из Root Project (, когда проект был составлен для отладки, а приложение выполнялось в режиме отладки ):
Код: Выделить всё
find | grep '\.so$' | xargs -I{} -exec llvm-objdump-18 -p "{}" | grep 'LOAD'
< /code>
Вывод вышеприведенной команды: < /p>
LOAD off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**16
LOAD off 0x0000000001dd0240 vaddr 0x0000000001de0240 paddr 0x0000000001de0240 align 2**16
LOAD off 0x00000000026f2370 vaddr 0x0000000002712370 paddr 0x0000000002712370 align 2**16
LOAD off 0x0000000002784490 vaddr 0x00000000027b4490 paddr 0x00000000027b4490 align 2**16
LOAD off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**16
LOAD off 0x0000000001dd0240 vaddr 0x0000000001de0240 paddr 0x0000000001de0240 align 2**16
LOAD off 0x00000000026f2370 vaddr 0x0000000002712370 paddr 0x0000000002712370 align 2**16
LOAD off 0x0000000002784490 vaddr 0x00000000027b4490 paddr 0x00000000027b4490 align 2**16
Третья вещь, которую я позаботился, было то, что мое приложение отлично работало в Android Virtual Device (AVD), поддерживая размер страниц 16KIB, конфигурируя новое API 36 AVD. Мое приложение, кажется, хорошо работает без каких -либо ошибок. Или с тех пор, мой текущий ndkversion "27.0.12077973" также правильно собрал библиотеки .so , поддерживающие 16 -киб -страницы, могу ли я быть уверен, что мое приложение будет работать без связанных с ними ошибок в устройствах 16 киб? Поскольку компиляция до 16 киб не является по умолчанию для NDKversions ниже R28 Как правильно скомпилировалась моя версия?>
Подробнее здесь: https://stackoverflow.com/questions/797 ... equirement