2023-01-19 306
我已经开始开发一个非常简单的Android应用程序,该应用程序由三个部分组成:
文件系统看起来像这样:
jni
Android.mk
libfoo.so
foowrapper.c
Android.mk文件包含以下内容:
LOCAL_PATH := $(call my-dir)
#==============================
include $(CLEAR_VARS)
LOCAL_MODULE := foo-prebuilt
LOCAL_SRC_FILES := libfoo.so
include $(PREBUILT_SHARED_LIBRARY)
#=========================
include $(CLEAR_VARS)
LOCAL_MODULE := foowrapper
LOCAL_SRC_FILES := foowrapper.c
LOCAL_SHARED_LIBRARIES := foo-prebuilt
include $(BUILD_SHARED_LIBRARY)
当我在Eclipse中构建应用程序时,情况似乎正常 – 没有报告错误.但是,当我将应用程序上传到三星Discover(运行Android 4.0.4)时,我会在日志中获得以下错误:
03-05 21:20:27.859: E/AndroidRuntime(20324): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1936]: 102 could not load needed library 'libfoo.so.0' for 'libfoowrapper.so' (load_library[1091]: Library 'libfoo.so.0' not found)
为什么Dalvik在寻找.so.0文件而不是.so文件?我需要对我的应用进行什么更改才能摆脱此错误?
至少在Linux世界中,每个共享库都有一个名为soname的特殊名称. Soname具有前缀lib,库的名称,短语.so,然后是一个周期和一个版本编号,每当接口更改时会增加(作为特殊例外,最低级别的C库” t从lib开始.一个完全合格的Soname包括该目录的前缀;在工作系统上,完全合格的Soname只是与共享库的real name.
的符号链接
每个共享库也都有一个real name,它是包含实际库代码的文件名.真实名称为Soname添加了一个时期,一个次要数字,另一个时期和发布号.最后一个时期和发布号是可选的.通过让您确切知道库的哪个版本已安装了哪个版本,次要的数字和发行号支持配置控件.请注意,这些数字可能与描述文档中图书馆的数字不同,尽管这确实使事情变得更容易.
参考: linux Standard Base
编辑:
看来这并不是一个罕见的问题,没有看到任何真正的解决方案,但是也许这会让您开始找到适合您的东西.
使用prebuilt_shared_library时local_src_files的问题
为Android创建非反复的共享库
http:///www.opengis. CH/2011/11/23/创建非跨性别的libraries-for-android/
图书馆的libproj.so.0’找不到
本文地址:https://www.itbaoku.cn/post/125015.html
以上所述是小编给大家介绍的Dalvik正在寻找带有'.0'扩展名的.so文件–为什么?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/25905.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态