如何使用的libc ++ STL库来构建OpenCV的为Android? [英] How to build OpenCV for Android using libc++ STL library?

查看:978
本文介绍了如何使用的libc ++ STL库来构建OpenCV的为Android?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想构建,而不是默认的GNU STL使用的libc ++ STL库从源OpenCV的。的LibC ++提供了更好的C ++ 11和C ++ 14的支持。是否有可能这样做吗?

I would like to build a OpenCV from source using a libc++ STL library, instead of default GNU STL. LibC++ offers better C++11 and C++14 support. Is it possible to do that?

推荐答案

我和OpenCV的2.4.7和Android NDK r10d测试这一点。

I've tested this with OpenCV 2.4.7 and Android NDK r10d.

首先,你需要下载的OpenCV源。解压源并更换与suppports的libc ++ 版本的平台/安卓/ android.toolchain.cmake

First, you need to download OpenCV source. Unpack the source and replace the platforms/android/android.toolchain.cmake with version that suppports libc++.

现在,打开模块/核心/有/ opencv2 /核心/ operations.hpp 和变更线从69

Now, open modules/core/include/opencv2/core/operations.hpp and change line 69 from

(defined __GNUC__ && defined _STLPORT_MAJOR)

(defined __GNUC__ && (defined _STLPORT_MAJOR || defined _LIBCPP_VERSION))

接下来,在文件夹平台/脚本创建一个脚本cmake_android_arm_libcxx.sh具有下列内容:

Next, in folder platforms/scripts create a script cmake_android_arm_libcxx.sh with following contents:

#!/bin/sh
cd `dirname $0`/..

mkdir -p build_android_arm
cd build_android_arm

cmake -DANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.8 -DANDROID_STL=c++_static -DANDROID_NATIVE_API_LEVEL=android-8 -DBUILD_ANDROID_EXAMPLES=OFF -DBUILD_DOCS=OFF -DBUILD_FAT_JAVA_LIB=OFF -DBUILD_JASPER=OFF -DBUILD_OPENEXR=OFF -DBUILD_PACKAGE=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_TIFF=OFF -DBUILD_WITH_DEBUG_INFO=OFF -DBUILD_opencv_androidcamera=OFF -DBUILD_opencv_contrib=OFF -DBUILD_opencv_java=OFF -DBUILD_opencv_legacy=OFF -DBUILD_opencv_ml=OFF -DBUILD_opencv_nonfree=OFF -DBUILD_opencv_objdetect=OFF -DBUILD_opencv_photo=OFF -DBUILD_opencv_stitching=OFF -DBUILD_opencv_ts=OFF -DBUILD_opencv_video=OFF -DBUILD_opencv_videostab=OFF -DCMAKE_C_FLAGS_RELEASE="-Os -DNDEBUG -fvisibility=hidden -ffunction-sections -fstack-protector-all" -DCMAKE_CXX_FLAGS_RELEASE="-Os -DNDEBUG -fvisibility=hidden -ffunction-sections -fstack-protector-all -fvisibility-inlines-hidden" -DENABLE_PRECOMPILED_HEADERS=OFF -DWITH_EIGEN=OFF -DWITH_JASPER=OFF -DWITH_OPENEXR=OFF -DWITH_TIFF=OFF -DWITH_TBB=ON -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DCMAKE_TOOLCHAIN_FILE=../android/android.toolchain.cmake $@ ../..

如果你愿意,你可以调整脚本的参数(即是造了什么以及如何)。

If you want, you can tweak the parameters of the script (i.e. what is built and how).

最后,路径导出到您的NDK build文件夹

Finally, export the path to your NDK build folder

export ANDROID_NDK=~/android-sdks/android-ndk-r10d/

和执行脚本:

 sh ./scripts/cmake_android_arm_libcxx.sh 

现在进入到 build_android_arm 文件夹,并建立OpenCV的:

Now enter to build_android_arm folder and build the OpenCV:

cd build_android_arm
make -j9

本的libjpeg,libpng的和其他第三方库将出现在平台/ build_android_arm /的3rdParty / lib目录和OpenCV库将出现在平台/ build_android_arm / lib目录文件夹中。

The libjpeg, libpng and other 3rd party libraries will appear in platforms/build_android_arm/3rdparty/lib and opencv libraries will appear in platforms/build_android_arm/lib folder.

本已在Mac OS X 10.10,OpenCV的2.4.7和Android NDK r10d测试。

This has been tested on Mac OS X 10.10, OpenCV 2.4.7 and Android NDK r10d.

这篇关于如何使用的libc ++ STL库来构建OpenCV的为Android?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆