簡體   English   中英

為什么我不能在 rapsberrypi4 上使用來自 AndroidNDK 的預構建庫?

[英]Why can't I use the pre-built library from AndroidNDK on rapsberrypi4?

也許我做錯了,但我還沒有學到其他的東西。 最重要的是,我決定構建一個程序,該程序將libOpenSLES .so(來自 AndroidNDK 的庫)本地鏈接到libOpenSLES

我在樹莓派上的操作系統:Debian Bullseye armhf。

uname -ar

Linux Guardian 5.10.52-v7l + # 1441 SMP Tue Aug 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-bind-now.c:無法打開模塊libOpenSLES .so:無法打開共享對象文件:沒有這樣的文件或目錄

同時, ldd無法正常工作

ldd /usr/lib/libOpenSLES .so 不是動態可執行文件

我為AndroidNDK提供的所有庫嘗試了ldd

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:

謝謝您的幫助。

抱歉,問題已解決。 Android NDK 提供僅用於鏈接的存根庫,它們不包含任何執行代碼。 真正的圖書館帶有真正的 Android 設備。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM