使用ndk jni构建curl时出现错误

7

我遇到了编译curl的问题,报错如下:

$ndk-build
Android NDK: Building for application 'curl' 
Android NDK: Trying to define local module 'curl' in sources/curl//jni/Android.mk. 
Android NDK: But this module was already defined by sources/curl//jni/Android.mk. 
build/core/build-module.mk:34: *** Android NDK: Aborting. . Stop.

有人可以提供编译依赖项的步骤吗?


你能否发布你的 Android.mk 文件(curl 模块的部分)? - Samveen
3个回答

1

当我尝试将预编译的静态库包含到NDK项目中时,遇到了类似的错误。通过编辑项目的Android.mk文件,并将 $(call import-module,<MY_MODULE_NAME>)这一行移到文件结尾(在include $(BUILD_SHARED_LIBRARY)之后),我解决了这个问题。


2
谢谢您的帮助,但我在我的android.mk中找不到$(call import-module,<MY_MODULE_NAME>)。 - Harshawardhan

0

我遇到了同样的问题,因为我使用了错误的命令。

在 Android.mk 目录中,我使用了 "ndk-build -f Android.mk",这导致了问题
Android NDK: 尝试在 Android.mk 中定义本地模块 'SRC'。
Android NDK: 但是该模块已经被 ... 定义了

但是当我输入 "ndk-build" 时,构建成功了!


0
在我的情况下,我正在添加一个需要gnustl_shared的共享库,因此我将它添加到了我的Android.mk文件中:
include $(CLEAR_VARS)
LOCAL_MODULE := libgnustl_shared
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_STATIC_LIBRARY)
LOCAL_SRC_FILES := $(LOCAL_PATH)/../../native_libs/$(TARGET_ARCH)/libgnustl_shared.so
include $(PREBUILT_SHARED_LIBRARY)

我得到的冲突是这样的:
Android NDK:尝试在jni/Android.mk中定义本地模块'gnustl_shared'。 Android NDK:但该模块已经由c:/android-ndk-r10d/sources/cxx-stl/gnu-libstdc++/Android.mk定义。
原因是因为我已经将其用作静态库。 这是在Application.mk中:
APP_STL:=gnustl_static
解决方法是将其更改为APP_STL:=gnustl_shared,然后从Android.mk中删除LOCAL_MODULE:=libgnustl_shared部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接