簡體   English   中英

無法加載庫“ libdl.so.2”

[英]could not load library “libdl.so.2”

我一直在嘗試將linux編譯的預建共享庫與我的android jni應用程序一起使用,但是當我嘗試運行該應用程序時,出現以下錯誤:

04-16 19:09:13.633:E / dalvikvm(11810):dlopen(“ / data / app-lib / com.lXXXX.XXXX.connect-2 / libXXX_embedded_shared.so”)失敗:無法加載庫:soinfo_link_image(linker .cpp:1636): 無法加載“ libXXX_embedded_shared.so”所需的 “ libdl.so.2”; 由load_library(linker.cpp:746)引起:找不到庫“ libdl.so.2”

我在android / system / lib中找不到libdl.so.2,但是有一個庫libdl.so,我嘗試加載該庫,但仍然無法解決依賴關系。

你能指出我在這里我想念的嗎?

你不可以做這個。

Android和普通的Linux具有很大的用戶空間,特別是它們使用完全不同的C庫和關聯的不兼容動態鏈接器。

對版本庫名稱(.so.2-Android當前未執行的操作)的強烈渴望表明該庫不是為Android構建的。

您需要通過創建android.mk和類似文件來驅動正常的ndk構建系統,或者通過使用ndk實用程序生成“獨立工具鏈”並將項目的構建系統指向android,使用android ndk重建所有庫 。產生的以Android為目標的gcc,ld等。

有些人通過在chroot中放置一小部分debian-arm或類似的東西來設法在root用戶的設備上使用普通的linux用戶空間組件,但這需要root用戶進行設置,而且jni不能從應用程序進程進行鏈接。 您的應用程序流程已經與Android的C庫緊密相連,因此您無法真正替代另一個。

暫無
暫無

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

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