#c #c #linux #android-ndk
Вопрос:
Может быть, я делаю это неправильно, но я не научился другому. Суть в том, что я решил создать программу, которая связывается с libOpenSLES
.so (библиотека из AndroidNDK) изначально с raspberrypi4.
Моя операционная система на raspberry pi: Debian bullseye armhf.
безымянный -ар
Linux guardian 5.10.52-v7l # 1441 SMP Вт 3 августа 18:11:56 BST 2021 armv7l GNU / Linux
Для этого я скопировал файлы библиотеки и заголовков с Android NDK непосредственно в свою среду.
ls /usr/include/SLES OpenSLES.h OpenSLES_AndroidConfiguration.h OpenSLES_Platform.h OpenSLES_Android.h OpenSLES_AndroidMetadata.h file /usr/lib/libOpenSLES.so /usr/lib/libOpenSLES.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID [md5 / uuid] = ee43a7abfd4e7dd27b03b0c97b80b768, with debug_info, not stripped The description is the same for all other libraries in the system.
Программа построена без ошибок с ключом ссылки-lOpenSLES, но при запуске выдает ошибку при загрузке этой библиотеки
E: [pulseaudio] ltdl-привязка-сейчас.c: Не удалось открыть модуль /главная/pulseaudio-android/testbuild/src/.библиотеки/модуль-opensles.so: libOpenSLES
.so: не удается открыть файл общего объекта: Такого файла или каталога нет
И в то же время ldd
не получается правильно
ldd /usr/lib/libOpenSLES
.таким образом, это не динамический исполняемый файл
Я попробовал ldd
для всех библиотек, поставляемых в AndroidNDK
find ./android-ndk-r23b -name libOpenSLES.so | grep androideabi | xargs ldd ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/26/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/29/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/31/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/27/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/24/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/18/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/19/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/23/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/28/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/22/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/16/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/21/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/30/libOpenSLES.so: not a dynamic executable ./android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/17/libOpenSLES.so:
Спасибо за помощь.
Ответ №1:
Извините, вопрос снят. Android NDK предоставляет библиотеки-заглушки, предназначенные только для ссылок, они не содержат никакого кода для выполнения. Реальные библиотеки поставляются с реальным устройством Android.
Спасибо.