Android ndk 未定义对'的引用;SSL#u new';Android NDK的构建
当我尝试用libssl.so和libcrypto.so上的本机代码构建android应用程序时,我得到了“未定义的SSL\u new引用”链接错误。 我在android.mk和application.mk中做错了什么 两个mk文件都位于\home\project\u root\app\src\main\jni。 这里是android.mk:Android ndk 未定义对'的引用;SSL#u new';Android NDK的构建,android-ndk,openssl,ndk-build,Android Ndk,Openssl,Ndk Build,当我尝试用libssl.so和libcrypto.so上的本机代码构建android应用程序时,我得到了“未定义的SSL\u new引用”链接错误。 我在android.mk和application.mk中做错了什么 两个mk文件都位于\home\project\u root\app\src\main\jni。 这里是android.mk: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := myWebCr
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myWebCrawler
LOCAL_SHARED_LIBRARIES := ../libs/$(TARGET_ARCH_ABI)/libssl.so ../libs/$(TARGET_ARCH_ABI)/libcrypto.so
LOCAL_SRC_FILES := utils/error_codes.c utils/list.c yetAdditionalSources.c
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
My application.mk包含一行:
APP_ABI := armeabi armeabi-v7a
在我的项目文件夹中,我有以下子文件夹:
\home\project\u root\app\src\main\libs\armeabi,
\home\project\u root\app\src\main\libs\armeabi-v7a,
\home\project\u root\app\src\main\libs\arm64-v8a,
\home\project\u root\app\src\main\libs\mips64
它们每个都有libssl.so和libcrypto.so的副本。
在路径$(NDK\u ROOT\platforms\android-21\$(TARGET\u ARCH\u ABI)\usr\lib)
为了所有的拱门。(x86、mips、arm…)
我做错了什么?为什么ndk build找不到.so文件
另外,当我从终端调用ndk构建时,我得到一个关于arm架构的错误
目标“/home/WebCrawler/app/src/main/obj/local/armeabi/libWebCrawler.so”的配方失败
当在android studio中单击build按钮时,它指的是mips
make:**[/home/WebCrawler/app/build/intermediates/ndkBuild/debug/obj/local/mips64/libWebCrawler.so]错误1
即使Application.mk在说明中没有提到mipsapp\u ABI:=armeabi-v7a
如果您需要更多信息来帮助我制作mk,请务必询问。另请参阅。我鄙视Android的构建系统。它改变了太多的东西,而且它的文档记录得很差。你可能会在这个问题上浪费几个小时。已经花了一个多星期的时间试图理解android.mk中的不同变量,并从源代码中为android构建ssl…所以,诀窍是提出一个新模块,重命名ssl?
。/libs/$(TARGET\u ARCH\u ABI)/libssl。所以
-是的,这会给你带来麻烦zygote
,它是Android的init
,将加载OpenSSL的底层版本。您的OpenSSL版本将永远不会加载,因为已加载Android版本。您应该做包装器共享对象的事情。另请参见OpenSSL wiki上的。另请参见。我鄙视Android的构建系统。它改变了太多的东西,而且它的文档记录得很差。你可能会在这个问题上浪费几个小时。已经花了一个多星期的时间试图理解android.mk中的不同变量,并从源代码中为android构建ssl…所以,诀窍是提出一个新模块,重命名ssl?。/libs/$(TARGET\u ARCH\u ABI)/libssl。所以
-是的,这会给你带来麻烦zygote
,它是Android的init
,将加载OpenSSL的底层版本。您的OpenSSL版本将永远不会加载,因为已加载Android版本。您应该做包装器共享对象的事情。另请参见OpenSSL wiki上的。