【问题标题】:Build Error with ndk jni for curl使用 ndk jni 为 curl 构建错误
【发布时间】:2012-04-04 12:14:06
【问题描述】:

我在编译 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 的部分)

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


【解决方案1】:

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

【讨论】:

  • 感谢您的帮助,但我在我的 android.mk 中找不到 $(call import-module,
【解决方案2】:

在我的例子中,我添加了一个需要 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 部分。

【讨论】:

    【解决方案3】:

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

    在 Android.mk 目录中,我使用了“ndk-build -f Android.mk”,这是导致问题的原因
    Android NDK: Trying to define local module 'SRC' in Android.mk.
    Android NDK: But this module was already defined by ...

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 2011-06-23
      • 2013-10-04
      • 1970-01-01
      相关资源
      最近更新 更多