首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Android arm64-v8a构建OpenCV时出错

为Android arm64-v8a构建OpenCV时出错
EN

Stack Overflow用户
提问于 2017-05-06 18:38:23
回答 1查看 2K关注 0票数 4

我正在尝试为安卓系统构建OpenCV 3.2。当我试图为armeabi-v7a配置构建它时,我没有遇到编译它的问题。但是,当我试图为arm64-v8a硬件编译它时,我得到了以下消息:

代码语言:javascript
复制
/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/signal.h:87:12: error: expected ')'
    void (*sa_sigaction)(int, struct siginfo*, void*);
           ^
/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/asm/signal.h:102:24: note: expanded from macro 'sa_sigaction'
#define sa_sigaction _u._sa_sigaction
                       ^
/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/signal.h:87:10: note: to match this '('
    void (*sa_sigaction)(int, struct siginfo*, void*);
         ^
/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/signal.h:87:12: error: duplicate member '_u'
    void (*sa_sigaction)(int, struct siginfo*, void*);
           ^
/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/asm/signal.h:102:22: note: expanded from macro 'sa_sigaction'
#define sa_sigaction _u._sa_sigaction
                     ^
/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/signal.h:86:18: note: previous declaration is here
    sighandler_t sa_handler;
                 ^
/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/asm/signal.h:101:20: note: expanded from macro 'sa_handler'
#define sa_handler _u._sa_handler  

以下是cmake的配置方式:

代码语言:javascript
复制
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN -DANDROID_NDK=$NDK_ROOT  -DANDROID_ABI=arm64-v8a  -DANDROID_NATIVE_API_LEVEL=21  -DCMAKE_INSTALL_PREFIX=~/opencv/arm64 -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TIFF=false -DTIFF_LIBRARY=$TIFF_LIBRARY -DTIFF_INCLUDE_DIR=$TIFF_INCLUDE_DIR -DBUILD_OPENEXR=false  

还有其他人遇到过这个问题吗?我已经和它斗争了两天了。任何帮助都将不胜感激。

编辑:我注意到cmake输出了这一行:

代码语言:javascript
复制
Target:                      Android 21 armv7-a

尽管我将abi设置为arm64-v8a。知道为什么吗?

EN

回答 1

Stack Overflow用户

发布于 2017-11-21 13:57:12

希望你已经解决了这个问题。当我首先使用cmake,然后分配一个工具链文件时,我也遇到了这个问题。我解决了这个问题,就用

代码语言:javascript
复制
cmake .. -DCMAKE_TOOLCHAIN_FILE=$NDK_PATH/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a"

然后使用cmake对构建子系统进行设置.那一切都会好起来的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43824082

复制
相关文章

相似问题

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