DoD*_*oDo 2 opencv stl android-ndk libc++
我想使用libc ++ STL库而不是默认的GNU STL从源代码构建OpenCV.LibC++提供更好的C++ 11和C++ 14支持.有可能吗?
我用OpenCV 2.4.7和Android NDK r10d进行了测试.
首先,您需要下载OpenCV源代码.解压源并用支持libc ++的版本替换platforms/android/android.toolchain.cmake .
现在,打开modules/core/include/opencv2/core/operations.hpp并更改第69行
(defined __GNUC__ && defined _STLPORT_MAJOR)
Run Code Online (Sandbox Code Playgroud)
至
(defined __GNUC__ && (defined _STLPORT_MAJOR || defined _LIBCPP_VERSION))
Run Code Online (Sandbox Code Playgroud)
接下来,在文件夹平台/脚本中创建一个脚本cmake_android_arm_libcxx.sh,其中包含以下内容:
#!/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 $@ ../..
Run Code Online (Sandbox Code Playgroud)
如果需要,可以调整脚本的参数(即构建的内容和方式).
最后,将路径导出到NDK构建文件夹
export ANDROID_NDK=~/android-sdks/android-ndk-r10d/
Run Code Online (Sandbox Code Playgroud)
并执行脚本:
sh ./scripts/cmake_android_arm_libcxx.sh
Run Code Online (Sandbox Code Playgroud)
现在进入build_android_arm文件夹并构建OpenCV:
cd build_android_arm
make -j9
Run Code Online (Sandbox Code Playgroud)
libjpeg,libpng和其他第三方库将出现在platforms/build_android_arm/3rdparty/lib,opencv库将出现在platforms/build_android_arm/lib文件夹中.
这已经在Mac OS X 10.10,OpenCV 2.4.7和Android NDK r10d上进行了测试.
| 归档时间: |
|
| 查看次数: |
3477 次 |
| 最近记录: |