2

我正在使用 NDK 为 Android 编写本机库(mylib.so)。Mylib.so 依赖于 libssl.so。

Android NDK 文档告诉我不应该使用 system/lib 中的 libssl.so,因为它不是稳定 API 的一部分。相反,我应该自己交叉编译 libssl 并将其添加到 NDK。

但是我看到 mylib.so 会自动与 system/lib/libssl.so 链接,因为 dalvik vm(正在加载 mylib.so)已经依赖于 libssl.so。

$ readelf -d /system/bin/dalvikvm | grep Shared
 0x00000001 (NEEDED)                     Shared library: [libdvm.so]
 0x00000001 (NEEDED)                     Shared library: [libssl.so]
 0x00000001 (NEEDED)                     Shared library: [libz.so]
 0x00000001 (NEEDED)                     Shared library: [libc.so]
 0x00000001 (NEEDED)                     Shared library: [libstdc++.s
 0x00000001 (NEEDED)                     Shared library: [libm.so]

那么处理这个问题的正确方法是什么?仍然使用 system/lib/libssl.so 吗?

谢谢

4

2 回答 2

1

您可以在以下站点下载它: http ://www.mediafire.com/download/njyqyxu3nxm/tcpdump.zip

于 2013-08-13T11:12:53.117 回答
0

听起来问题可能出在您的 Android.mk 文件中。假设您已经成功地将所需的 libssl 版本交叉编译为 .so 文件,您将需要在 Android.mk 文件中创建一个新模块,如下所示:

include $(CLEAR_VARS)
LOCAL_MODULE := libssl-prebuilt
LOCAL_SRC_FILES := libssl.so
LOCAL_EXPORT_C_INCLUDES := /path/to/the/include/files/for/libssl.so
include $(PREBUILT_SHARED_LIBRARY)

上面的模块将您本地预构建的 libssl.so 版本添加到您的本机项目中。如果在编译 mylib.so 时要链接本地版本的 libssl.so,则必须将以下条目添加到 mylib 模块中。

LOCAL_SHARED_LIBRARIES := libssl-prebuilt 
于 2013-03-21T18:32:47.200 回答