android makefile中的OpenCV/NDK-zlib编译问题

android makefile中的OpenCV/NDK-zlib编译问题,opencv,android-ndk,ubuntu-13.04,android-make,Opencv,Android Ndk,Ubuntu 13.04,Android Make,我一直在尝试编译我的共享库,其中包括OpenCV库。我的android make文件示例如下: LOCAL_PATH := (call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libopencvXXX LOCAL_SRC_FILES := libs/opencv/libopencvXXX.a include $(PREBUILT_STATIC_LIBRARY) OPENCV_LIB_TYPE := STATIC OPENCV_INSTALL_

我一直在尝试编译我的共享库,其中包括OpenCV库。我的android make文件示例如下:

LOCAL_PATH := (call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libopencvXXX
LOCAL_SRC_FILES := libs/opencv/libopencvXXX.a
include $(PREBUILT_STATIC_LIBRARY)

OPENCV_LIB_TYPE := STATIC
OPENCV_INSTALL_MODULES := on
OPENCV_CAMERA_MODULES := on

LOCAL_MODULE := libXXX
LOCAL_CPPFLAGS := -std=c++11 -fexceptions
LOCAL_CPP_FEATURES += exceptions
LOCAL_CFLAGS := -std=gnu++11 -fexceptions
LOCAL_LDLIBS := -llog -ldl

LOCAL_SRC_FILES := XXX.cpp
LOCAL_C_INCLUDES := <path to opencv header files>

LOCAL_STATIC_LIBRARIES := stdc++
LOCAL_STATIC_LIBRARIES += libopencvXXX

include $(BUILD_SHARED_LIBRARY)
我尝试了以下几种选择

LOCAL_LDLIBS += -lz
LOCAL_LDLIBS += -L<NDK root>/platforms/android-19/arch-arm/usr/lib -lz
LOCAL_LDLIBS+=-lz
LOCAL_LDLIBS+=-L/platforms/android-19/arch-arm/usr/lib-lz
但没有任何帮助。有人知道我该怎么解决这个问题吗


编辑:忘了添加这两个选项,包括'-lz',它会抛出一个错误:“没有找到本机编译库,本机编译成功完成了吗!”。

我发现了问题。我应该补充一句

包括$(清除变量)

包括所有静态库之后。下面是修改后的Android.mk

LOCAL_PATH := (call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libopencvXXX
LOCAL_SRC_FILES := libs/opencv/libopencvXXX.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

OPENCV_LIB_TYPE := STATIC
OPENCV_INSTALL_MODULES := on
OPENCV_CAMERA_MODULES := on

LOCAL_MODULE := libXXX
LOCAL_CPPFLAGS := -std=c++11 -fexceptions
LOCAL_CPP_FEATURES += exceptions
LOCAL_CFLAGS := -std=gnu++11 -fexceptions
LOCAL_LDLIBS := -llog -ldl

LOCAL_SRC_FILES := XXX.cpp
LOCAL_C_INCLUDES := <path to opencv header files>

LOCAL_STATIC_LIBRARIES := stdc++
LOCAL_STATIC_LIBRARIES += libopencvXXX

include $(BUILD_SHARED_LIBRARY)
LOCAL_PATH:=(调用我的目录)
包括$(清除变量)
本地_模块:=libopencvXXX
本地文件:=libs/opencv/libopencvXXX.a
包括$(预构建的\u静态\u库)
包括$(清除变量)
OPENCV_LIB_类型:=静态
OPENCV_安装_模块:=打开
OPENCV_摄像头_模块:=打开
本地_模块:=libXXX
本地标志:=-std=c++11-feexceptions
本地_CPP_功能+=异常
本地\u CFLAGS:=-std=gnu++11-feexceptions
本地低密度脂蛋白胆固醇:=-llog-ldl
本地\u SRC\u文件:=XXX.cpp
本地___包括:=
本地\u静态\u库:=stdc++
本地\u静态\u库+=libopencvXXX
包括$(构建共享库)

我希望--log而不是-llog是复制/粘贴错误,而不是Android.mk中的打字错误。而且你肯定不需要
-feexceptions
对于本地用户来说,这是一个打字错误。我修复了它。我希望您使用的是NDKR9D,而不是标签所暗示的r5。我应该提到这一点。我用的是ndk-r9c。哦,是的,当然我也试过了,但给出了我编辑的问题中提到的相同错误。感谢上面的本机构建命令,我能够运行它们,并且我再次注意到它正在尝试访问一些libtiff.so,实际上我正在静态链接它们。构建就在那之后停止。
LOCAL_PATH := (call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libopencvXXX
LOCAL_SRC_FILES := libs/opencv/libopencvXXX.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

OPENCV_LIB_TYPE := STATIC
OPENCV_INSTALL_MODULES := on
OPENCV_CAMERA_MODULES := on

LOCAL_MODULE := libXXX
LOCAL_CPPFLAGS := -std=c++11 -fexceptions
LOCAL_CPP_FEATURES += exceptions
LOCAL_CFLAGS := -std=gnu++11 -fexceptions
LOCAL_LDLIBS := -llog -ldl

LOCAL_SRC_FILES := XXX.cpp
LOCAL_C_INCLUDES := <path to opencv header files>

LOCAL_STATIC_LIBRARIES := stdc++
LOCAL_STATIC_LIBRARIES += libopencvXXX

include $(BUILD_SHARED_LIBRARY)