zoukankan      html  css  js  c++  java
  • 解决一个Ubuntu中编译NEON优化的OpenCV的错误

    在Ubuntu 16中编译开启NEON优化的Opencv时,遇到libpng编译是使用汇编代码的错误,完整错误见文章末尾。通过查询发现解决方案是安装跨平台编译器,安装代码如下:

    sudo apt-get install gcc-arm-linux-gnueabi
    sudo apt-get install gcc-arm-linux-gnueabihf
    sudo apt-get install g++-arm-linux-gnueabihf

    在参考1中说的是用OCV源码中的toolchain_file,但是我用这个编译出来的会导致各种undefin reference,还是要用NDK中的toolchai_file才行
    参考1
    参考2

    [ 17%] Building C object 3rdparty/libpng/CMakeFiles/libpng.dir/arm/arm_init.c.o
    [ 17%] Building ASM object 3rdparty/libpng/CMakeFiles/libpng.dir/arm/filter_neon.S.o
    <instantiation>:18:9: error: unknown directive
            .func png_read_filter_row_sub4_neon
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:65:1: note: while in macro instantiation
    func png_read_filter_row_sub4_neon, export=1
    ^
    <instantiation>:2:9: error: unknown directive
            .endfunc
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:79:1: note: while in macro instantiation
    endfunc
    ^
    <instantiation>:18:9: error: unknown directive
            .func png_read_filter_row_sub3_neon
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:81:1: note: while in macro instantiation
    func png_read_filter_row_sub3_neon, export=1
    ^
    <instantiation>:2:9: error: unknown directive
            .endfunc
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:105:1: note: while in macro instantiation
    endfunc
    ^
    <instantiation>:18:9: error: unknown directive
            .func png_read_filter_row_up_neon
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:107:1: note: while in macro instantiation
    func png_read_filter_row_up_neon, export=1
    ^
    <instantiation>:2:9: error: unknown directive
            .endfunc
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:118:1: note: while in macro instantiation
    endfunc
    ^
    <instantiation>:18:9: error: unknown directive
            .func png_read_filter_row_avg4_neon
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:120:1: note: while in macro instantiation
    func png_read_filter_row_avg4_neon, export=1
    ^
    <instantiation>:2:9: error: unknown directive
            .endfunc
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:139:1: note: while in macro instantiation
    endfunc
    ^
    <instantiation>:18:9: error: unknown directive
            .func png_read_filter_row_avg3_neon
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:141:1: note: while in macro instantiation
    func png_read_filter_row_avg3_neon, export=1
    ^
    <instantiation>:2:9: error: unknown directive
            .endfunc
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:174:1: note: while in macro instantiation
    endfunc
    ^
    <instantiation>:18:9: error: unknown directive
            .func png_read_filter_row_paeth4_neon
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:192:1: note: while in macro instantiation
    func png_read_filter_row_paeth4_neon, export=1
    ^
    <instantiation>:2:9: error: unknown directive
            .endfunc
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:213:1: note: while in macro instantiation
    endfunc
    ^
    <instantiation>:18:9: error: unknown directive
            .func png_read_filter_row_paeth3_neon
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:215:1: note: while in macro instantiation
    func png_read_filter_row_paeth3_neon, export=1
    ^
    <instantiation>:2:9: error: unknown directive
            .endfunc
            ^
    /home/willhua/opencv/opencv-3.4.1/3rdparty/libpng/arm/filter_neon.S:250:1: note: while in macro instantiation
    endfunc
    ^
    3rdparty/libpng/CMakeFiles/libpng.dir/build.make:446: recipe for target '3rdparty/libpng/CMakeFiles/libpng.dir/arm/filter_neon.S.o' failed
    make[2]: *** [3rdparty/libpng/CMakeFiles/libpng.dir/arm/filter_neon.S.o] Error 1
    CMakeFiles/Makefile2:655: recipe for target '3rdparty/libpng/CMakeFiles/libpng.dir/all' failed
    make[1]: *** [3rdparty/libpng/CMakeFiles/libpng.dir/all] Error 2
    Makefile:162: recipe for target 'all' failed
    make: *** [all] Error 2
    
    
  • 相关阅读:
    有36辆自动赛车和6条跑道,没有计时器的前提下,最少用几次比赛可以筛选出最快的三辆赛车?----腾讯2016研发工程师在线模拟笔试题
    10G个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可
    计算机网络总结(二)
    计算机网络总结(一)
    最小编辑距离
    寻找两个有序数组的中位数
    Linux下几款C++程序中的内存泄露检查工具
    DDIA
    推荐引擎
    Innodb中的事务隔离级别和锁的关系
  • 原文地址:https://www.cnblogs.com/willhua/p/9675905.html
Copyright © 2011-2022 走看看