使用ndk jni为curl构建错误

时间:2012-04-04 12:14:07

标签: android curl android-ndk java-native-interface

我在编译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.

任何人都可以提供用于编译依赖项的过程吗?

3 个答案:

答案 0 :(得分:1)

尝试将预编译的静态库包含到NDK项目中时出现了类似的错误。我通过编辑项目的Android.mk文件来修复它,将行$(call import-module,<MY_MODULE_NAME>)移到文件的最后(include $(BUILD_SHARED_LIBRARY)之后)。

答案 1 :(得分: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: Trying to define local module 'gnustl_shared' in jni/Android.mk.
Android NDK: But this module was already defined by 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部分。

答案 2 :(得分:0)

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

在Android.mk目录中,我使用&#34; ndk-build -f Android.mk&#34;,这导致了问题     Android NDK: Trying to define local module 'SRC' in Android.mk.
    Android NDK: But this module was already defined by ...

但是当我输入&#34; ndk-build&#34;时,构建成功了!