2017-08-09 118 views
0

Application.mkNDK编译错误:

APP_STL := gnustl_static 
APP_ABI := all 

Android.mk

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 
LOCAL_MODULE := libz 
LOCAL_SRC_FILES := ../prebuild/libz.a 
LOCAL_EXPORT_C_INCLUDES := ../prebuild/include/ 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := libssl 
LOCAL_SRC_FILES := ../prebuild/libssl.a 
LOCAL_EXPORT_C_INCLUDES := ../prebuild/include 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := libcrypto 
LOCAL_SRC_FILES := ../prebuild/libcrypto.a 
LOCAL_EXPORT_C_INCLUDES := ../prebuild/include 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := libjson-c 
LOCAL_SRC_FILES := ../prebuild/libjson-c.a 
LOCAL_EXPORT_C_INCLUDES := ../prebuild/include 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := libcurl 
LOCAL_SRC_FILES := ../prebuild/include/libcurlall/$(TARGET_ARCH_ABI)/libcurl.a 
LOCAL_EXPORT_C_INCLUDES := ../prebuild/include 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := curl-ndk 
LOCAL_SRC_FILES := ../cpp/curl-http.cpp 
LOCAL_STATIC_LIBRARIES := libcurl libssl libcrypto libz libjson-c 
LOCAL_LDLIBS := -lz -llog -ljnigraphics 
include $(BUILD_SHARED_LIBRARY) 

干净(错误链接命令,退出代码为1(使用-v看看调用)失败)项目,我试图交叉编译NDK,然后显示给出下面的错误:

/Volumes/Work/Android/Projects/app/src/main/jni/../prebuild/libz.a: error adding symbols: File in wrong format 
clang++: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [/Volumes/Work/Android/Projects/app/src/main/obj/local/arm64-v8a/libcurl-ndk.so] Error 1 

及其对32位正常,但64位工作的示值误差提前

+0

是否在构建之前用64位版本替换预建的库? – bendaf

回答

0

感谢您使用的是所有的ABI一个预置的。您需要为每个您定位的ABI预建一个。写一个预制的模块的典型方法是这样的:

include $(CLEAR_VARS) 
LOCAL_MODULE := libz 
LOCAL_SRC_FILES := ../prebuild/$(TARGET_ARCH_ABI)/libz.a 
LOCAL_EXPORT_C_INCLUDES := ../prebuild/include/ 
include $(PREBUILT_STATIC_LIBRARY) 

那么你可以有预生成/ armeabi-V7A/libz.a,预生成/ arm64-V8A/libz.a等禁用的ABI你不” t想要在您的Application.mk中使用APP_ABI构建(或者没有预构建)。

+0

所以如何获取所有libz.a文件。 –

+0

你从哪里得到你的? –