【发布时间】:2017-01-05 06:23:07
【问题描述】:
我从未使用 Android 构建 curl。
先决条件:我使用的是 Android Studio 2.1.2 我正在使用 NDK ,非实验方式 我在 curlLib 目录的 jni 文件夹中有 curl-7.49.1 库的源代码 ExtLibCurl 是我的应用程序 jni 文件夹中的文件夹/目录,其中包含从下载的源代码 https://android.googlesource.com/platform/external/curl/+/e6f2b03027b5feb92b30f5d47801ec3fabe9fd95
可以在 Android.mk 中检查 cURL 和其他文件。
根据问题中的 cmets 更新文件。
以下是我的 Android.mk 文件
JNI_DIR := $(call my-dir)
LOCAL_PATH:= $(JNI_DIR)
include $(CLEAR_VARS)
include $(LOCAL_PATH)/ExtLibCurl/Android.mk
# Build main library as shared library.
LOCAL_PATH := $(JNI_DIR)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/ExtLibCurl/include/curl
LOCAL_C_INCLUDES += $(LOCAL_PATH)/ExtLibCurl/lib
FILE_LIST += $(wildcard $(LOCAL_PATH)/ExtLibCurl/src/*.c)
LOCAL_MODULE := ndksampleapp
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
LOCAL_STATIC_LIBRARIES := ExtLibCurl
include $(BUILD_SHARED_LIBRARY)
应用程序.mk
APP_ABI := all
APP_STL := gnustl_static
APP_CFLAGS += -std=gnu++11
APP_OPTIM := debug
LOCAL_CPP_FEATURES += exceptions
NDK_TOOLCHAIN_VERSION := 4.9
我构建 curl 的 Android.mk 的方式是否正确?
当我在 src\main 路径中执行 ndk-build 时,出现以下错误
[arm64-v8a] Compile : ndksampleapp <= curlutil.c
cc1.exe: warning: command line option '-std=gnu++11' is valid for C++/ObjC++ but not for C
In file included from jni/ExtLibCurl/lib/strdup.h:24:0,
from jni/ExtLibCurl/src/setup.h:206,
from jni/ExtLibCurl/src/curlutil.c:23:
jni/ExtLibCurl/lib/setup.h:120:28: fatal error: curl/curlbuild.h: No such file or directory
#include <curl/curlbuild.h>
^
compilation terminated.
make: *** [obj/local/arm64-v8a/objs-debug/ndksampleapp/ExtLibCurl/src/curlutil.o] Error 1
如果我删除 FILE_LIST += $(wildcard $(LOCAL_PATH)/ExtLibCurl/src/*.c) 不会生成任何 cURL 文件。
【问题讨论】:
-
作为一个快速测试,将 curlLib 的 android.mk 的相对路径包含更改为完整的绝对路径。如果这可行,那么问题就变成了在知道构建的其余部分是正确的情况下找出正确的相对路径..
-
嘿@RichardCritten 感谢您的回复,但它无法正常中止并给出以下错误:Android NDK: Trying to define local module 'curl' in jni/curlLib/packages/Android/Android.mk。 Android NDK:但是这个模块已经被 jni/curlLib/packages/Android/Android.mk 定义了。 C:/Users/m1035325/AppData/Local/Android/sdk/ndk-bundle/build//../build/core/build-module.mk:34: *** Android NDK: 中止。 .停止。我什至尝试使用完全合格的路径。
-
在这个问题中反对什么?
-
重新投反对票 - 不知道 - 将你投回 0。
-
@RichardCritten 谢谢 :)
标签: android c++ c curl android-ndk