Есть ли способ запустить библиотеку .so (составленную NDK для Android aarch64) в Linux aarch64 (cent7 Arm)?Linux

Ответить Пред. темаСлед. тема
Anonymous
 Есть ли способ запустить библиотеку .so (составленную NDK для Android aarch64) в Linux aarch64 (cent7 Arm)?

Сообщение Anonymous »


У меня есть скомпилированная общая библиотека aarch64 (my_custom.so), которая была успешно интегрирована в APK и работает на устройствах Android. Поскольку это автономная низкоуровневая вычислительная библиотека, не зависящая от компонентов системы Android.

Я изучаю возможность создания исполняемого файла aarch64 для Linux, включающего эту библиотеку. Это обеспечит те же функции на стороне сервера и станет альтернативой устройствам Android, используя общую архитектуру aarch64.

К сожалению, исходный код my_custom.so утерян.

С помощью таких команд, как ldd и readelf, я подтвердил, что my_custom.so зависит только от libc.so, libc++_shared.so, liblog.so и libz.so. Однако возникает ошибка, указывающая, что библиотека /lib64/libc.so имеет недопустимый заголовок ELF: «/lib64/libc.so неверный заголовок elf. "

После использования команды cat я убедился, что /lib64/libc.so на самом деле является текстовым файлом, а фактический файл библиотеки — /lib64/libc.so.6. Когда я попытался создать символическую ссылку из /lib64/libc.so на /lib64/libc.so.6, я столкнулся с ошибкой: версия glibc не найдена.

Я предполагаю, что это несоответствие может быть связано с тем, что my_custom.so скомпилирован с NDK, который использует библиотеку libc, отличную от той, которая присутствует в моей текущей среде Linux aarch64. Поэтому я попытался найти соответствующую библиотеку libc в каталоге платформы NDK.

Я скопировал libc.so из каталога платформ NDK и загрузил его перед my_custom.so, но столкнулся с **ошибкой «не выровнено по странице». Исследования Google показывают, что это может быть связано с тем, что библиотеки не соответствуют большему размеру страницы. Поскольку размер страницы памяти текущей системы не подлежит изменению, я сейчас ищу альтернативные версии libc.so

После копирования libc.so из /toolchains/llvm/prebuilt/ в NDK я проверил его с помощью ldd. Я также скопировал libc++_shared.so из каталога llvm, и он также прошел проверку ldd.

Однако, когда я запустил всю программу, это привело к дампу ядра...

Я хочу знать, можно ли запустить библиотеку .so (составленную NDK для Android aarch64) в Linux aarch64. Если это возможно, правильный ли мой подход и что мне делать дальше?

Я полагаю, что использование таких технологий, как QEMU или Anbox, для запуска виртуальной машины Android в Linux может быть реальным решением. Однако, учитывая, что my_custom.so не зависит ни от каких компонентов системы Android, я считаю, что подход с использованием виртуальных машин относительно сложен и ресурсоемок, что приводит к потенциальной потере ресурсов.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Нет NDK Arm-linux-androideabi-gcc в $PATH в (оценка 13)
    Anonymous » » в форуме Android
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Сборка Android NDK cmake включает библиотеку .so, включенную в библиотеку .aar
    Гость » » в форуме C++
    0 Ответы
    51 Просмотры
    Последнее сообщение Гость
  • Настройка клавиатуры Arm aarch64 для эмулятора qemu
    Anonymous » » в форуме Linux
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Cross Compilled Arm Readyabquebaboble все еще показывается как aarch64
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Cross Compilled Arm Readyabquebaboble все еще показывается как aarch64
    Anonymous » » в форуме C++
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Linux»