首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用OpenCV STL库为libc++构建libc++?

如何使用OpenCV STL库为libc++构建libc++?
EN

Stack Overflow用户
提问于 2014-12-10 09:20:44
回答 2查看 3.9K关注 0票数 2

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-10 09:20:44

我已经用OpenCV 2.4.7和Android r10d测试了这一点。

首先,您需要下载OpenCV source。打开源代码,用version that suppports libc++替换/android/android.toolchain.cmake平台。

现在,打开modules/core/include/opencv2/core/operations.hpp并从

代码语言:javascript
复制
(defined __GNUC__ && defined _STLPORT_MAJOR)

代码语言:javascript
复制
(defined __GNUC__ && (defined _STLPORT_MAJOR || defined _LIBCPP_VERSION))

接下来,在文件夹平台/脚本中创建一个脚本cmake_android_arm_libcxx.sh,其内容如下:

代码语言:javascript
复制
#!/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 $@ ../..

如果需要,可以调整脚本的参数(即构建什么以及如何构建)。

最后,将路径导出到NDK构建文件夹。

代码语言:javascript
复制
export ANDROID_NDK=~/android-sdks/android-ndk-r10d/

并执行脚本:

代码语言:javascript
复制
 sh ./scripts/cmake_android_arm_libcxx.sh 

现在输入build_android_arm文件夹并构建OpenCV:

代码语言:javascript
复制
cd build_android_arm
make -j9

libjpeg、libpng和其他第三方库将出现在platforms/build_android_arm/3rdparty/lib中,opencv库将出现在platforms/build_android_arm/lib文件夹中。

这已经在MacOSX10.10、OpenCV 2.4.7和Android r10d上进行了测试。

票数 7
EN

Stack Overflow用户

发布于 2016-03-24 08:44:55

下面是一个脚本,用于使用clang和libc++为arm64构建arm64 3.0 (对于其他ABI只是更改工具链名称):

代码语言:javascript
复制
#!/bin/sh

export ANDROID_NDK=~/android-sdks/android-ndk
cmake -DANDROID_TOOLCHAIN_NAME=aarch64-linux-android-clang3.5 -DANDROID_STL=c++_static -DANDROID_ABI="arm64-v8a" -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=ON -DBUILD_WITH_DEBUG_INFO=OFF -DBUILD_opencv_apps=OFF -DBUILD_opencv_java=OFF -DBUILD_opencv_python2=OFF -DBUILD_opencv_world=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=ON -DWITH_TBB=ON -DWITH_CUDA=OFF -DWITH_CUFFT=OFF -DWITH_WEBP=OFF -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DCMAKE_TOOLCHAIN_FILE=$1/platforms/android/android.toolchain.cmake $1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27397258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档