Как собрать .so, чтобы он зависел от других .so без номера версии - PullRequest
1 голос
/ 10 августа 2011

Я создаю разделяемую библиотеку Android, и проблема в том, что Android, похоже, не поддерживает управление версиями совместно используемой библиотеки. Похоже, что .so библиотеки на телефоне Android не содержат номера своей версии в своем имени.

Когда я делаю свою сборку (ndk r6 со своим собственным набором инструментов), создается впечатление, что я создаю зависимости, которые добавляют другие библиотеки .so с номером версии в конце.

У меня вопрос, могу ли я создать свой .so с его зависимостями, не указав номер своей версии.

Я могу объяснить лучше, показав то, что, как мне кажется, я ожидаю увидеть. В данный момент моя dll не загружается и когда я делаю readelf, я вижу это:

$ arm-linux-androideabi-readelf.exe -d libthis.so

Dynamic section at offset 0x188fc contains 30 entries:
Tag        Type                         Name/Value
0x00000001 (NEEDED)                     Shared library: [lib1.so.3]
0x00000001 (NEEDED)                     Shared library: [lib2.so.3]
0x00000001 (NEEDED)                     Shared library: [lib3.so.3]
0x00000001 (NEEDED)                     Shared library: [lib4.so.3]
0x00000001 (NEEDED)                     Shared library: [lib5.so.3]
0x00000001 (NEEDED)                     Shared library: [lib6.so.3]
0x00000001 (NEEDED)                     Shared library: [liblog.so]
0x0000000e (SONAME)                     Library soname: [libthis.so.3]
0x00000010 (SYMBOLIC)                   0x0

Когда я ожидал увидеть это

$ arm-linux-androideabi-readelf.exe -d libthis.so

Dynamic section at offset 0x188fc contains 30 entries:
Tag        Type                         Name/Value
0x00000001 (NEEDED)                     Shared library: [lib1.so]
0x00000001 (NEEDED)                     Shared library: [lib2.so]
0x00000001 (NEEDED)                     Shared library: [lib3.so]
0x00000001 (NEEDED)                     Shared library: [lib4.so]
0x00000001 (NEEDED)                     Shared library: [lib5.so]
0x00000001 (NEEDED)                     Shared library: [lib6.so]
0x00000001 (NEEDED)                     Shared library: [liblog.so]
0x0000000e (SONAME)                     Library soname: [libthis.so]
0x00000010 (SYMBOLIC)                   0x0

1 Ответ

0 голосов
/ 12 августа 2011

В случае, если кто-нибудь зайдет сюда, мне кажется, мне нужно было вручную изменить файл конфигурации, чтобы переменная soname_spec не ссылалась на информацию о версии.

Возможно, есть лучший способ сделать это, но это работает.

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