LINUX.ORG.RU

Сборка C++-библиотеки для Android из под VM

 ,


0

1

Имеется VM под управлением Linux с архитектурой ARMv8. Простейшие собственные библиотеки, собранные под виртуальной машиной без проблем работают в проекте под Android Studio с той же архитектурой ARMv8. Но, если собственная библиотека использует какие-либо сторонние библиотеки, то возникает проблема, возможно связанная с нумерацией библиотек в Linux, например

dlopen failed: library "libfoobar.so.1.2.3" not found

Скопировать libofoobar.so.1.2.3 в каталог с собстенной библиотекой не помогает. И есть предположение, что проблема в soname --- в Андроид все библиотеки без цифр.

Как можно обойти эту проблему без кросскомпиляции и собирать на Linux VM с подходящей архитектурой?

Являются ли для Андроида проблемными библиотеки с цифрами в конце.

Ответ на: комментарий от pon4ik

Для данного вопроса это не принципиально, и так, и так пойдет)

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM

А что мне даст визуализация таблиц имен с nn или strings? Да, я вижу «искарежанные» имена методов из libfoobar.so.1.2.3 с nm, но и без этого я знаю, что используется libfoobar. Поэтому я и кидаю libfoobar.so.1.2.3 в каталог с библиотеками в андроид прожекте.

cppercpper
() автор топика
Ответ на: комментарий от cppercpper

man ld читал уже?

Почитай на досуге.

А пока, убедись, что в библиотеке нет неразрешаемых символов, с помощью того же ldd.

pon4ik ★★★★★
()
Последнее исправление: pon4ik (всего исправлений: 1)
Ответ на: комментарий от cppercpper

а ты действительно этого хочешь?

ехать - компеляй через ндк и линкуй статично. шашечки - развлекайся с приколами от гугла, через месяц-два один фиг всё сломают.

по первой ссылке какой-то «Add C and C++ code to your project» - гайд для имбецилов без полезной нагрузки.

а какие конкретно либы тебе нужны?

luntik2012
()
Ответ на: комментарий от luntik2012

Слов про формат пакета не было, может оно тарболами распространяется…

Конкретно про apk я не знаю, но речь пока-что про ошибки линковки, при этом, имя библиотеки линкер определил правильно.

pon4ik ★★★★★
()
Ответ на: комментарий от luntik2012

по первой ссылке какой-то «Add C and C++ code to your project» - гайд для имбецилов

так пишу же исходном посте, что на уровне гайда для эмбицилов ложу в нужный каталог so-бинарник и он sцука работает, если это библиотека без цифирь, типа libsome.so.

А когда библиотека имеет цифры libfoobar.so.1.2.3, то Андроидная Студия не видет библиотеку. просто переименовать или докопировать символическую ссылку не помогает, библиотека не моя.

cppercpper
() автор топика
Ответ на: комментарий от cppercpper

ну хз, я писал всякое на qt под ведро и зависимости были или заурядные, или мои so/a. может, попробуешь сам собрать, а потом расскажешь, что больнее: это или ждать два дня, пока на лоре помогут?

luntik2012
()
Ответ на: комментарий от luntik2012

А сборку плагинами qt-creator делал? Кросскомпиляция? Или все таки есть шанс собрать на Linux ARM?

cppercpper
() автор топика

Ребят, какие симлинки, какие ldd, nm?

Android ведь внутри APK не поддерживает версионирование в soname, ибо библиотеки идут как часть пакета и не предназначены для установки в саму систему.

См. https://stackoverflow.com/a/26694183

EXL ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.