zoukankan      html  css  js  c++  java
  • 转载 交叉编译Opencv2.4.9完全实录

    #1.编译环境及库文件
    linux环境:ubuntu14.04
    交叉编译工具 gcc-arm-linux-gnueabi
    安装
    sudo apt-get install gcc-arm-linux-gnueabi
    sudo apt-get install g+±arm-linux-gnueabi
    #2.使用cmake-gui配置
    以下配置非常关键!!!!
    点config

    Compilers选项中的C选择*-gcc
    C++选择*-g++,要找到交叉编译工具链所在位置。
    find program include
    编译工具的库函数(lib)的位置
    点Advanced
    接下来是终极配置!!不按照以下配置必然会报错!!

    去掉BUILD_OPENEXR
    去掉BUILD_opencv_ocl
    去掉WITH_1394
    去掉WITH_CUDA
    去掉WITH_GSTREAMER(没见到)
    去掉WITH_GTK(没见到)
    去掉WITH_LIBV4L(后边有v4l这个没用不要选)(没见到)
    去掉WITH_OPENCL
    去掉WITH_OPENEXR
    去掉WITH_TIFF
    在cmake-gui中去掉BUILD_opencv_apps这一项的钩钩!!!

    勾上BUILD_JASPER
    勾上BUILD_JPEG
    勾上BUILD_PNG
    勾上BUILD_ZLIB

    CMAKE_C_FLAGS 设置为-O3 -fPIC
    CMAKE_CXX_FLAGS 设置为-O3 -fPIC

    CMAKE_MODULE_LINKER_FLAGS:STRING=-pthread -lrt -ldl
    CMAKE_EXE_LINKER_FLAGS:STRING=-pthread -lrt
    //注意,有些系统是如下配置,反正我的ubuntu14.04只能是使用上面的配置
    (CMAKE_MODULE_LINKER_FLAGS:STRING=-lpthread -lrt
    CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt
    -lpthread都改为-pthread)
    注意,有时候还是会 出现错误此时
    修改编译目录下的 CMakeCache.txt 文件:
    找到 CMAKE_EE_LINKER_FLAGS:STRING 项:

    190 //Flags used by the linker.
    191 CMAKE_EXE_LINKER_FLAGS:STRING=’ ’

    修改成以下:
    190 //Flags used by the linker.
    191 CMAKE_EXE_LINKER_FLAGS:STRING= -pthread -lrt

    #3.编译和安装
    配置好后点generate
    make
    或者make -j8(八线程哦,快很多)
    make install

    #4.常见错误提示及解决方法

    (1)错误1
    Linking CXX shared library …/…/lib/libopencv_core.so
    /opt/EmbedSky/4.4.6/lib/gcc/arm-embedsky-linux-gnueabi/4.4.6/…/…/…/…/arm-embedsky-linux-gnueabi/bin/ld: …/…/3rdparty/lib/libzlib.a(inflate.c.obj): relocation R_ARM_MOVW_ABS_NC against `a local symbol’ can not be used when making a shared object; recompile with -fPIC
    …/…/3rdparty/lib/libzlib.a: could not read symbols: Bad value
    collect2: ld returned 1 exit status
    make[2]: *** [lib/libopencv_core.so] 错误 1
    make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] 错误 2

    解决方法1:
    http://ask.csdn.net/questions/70191
    最佳方法:
    在cmake-gui 中配置
    CMAKE_C_FLAGS 设置为-O3 -fPIC
    CMAKE_CXX_FLAGS 设置为-O3 -fPIC

    (2)错误2
    …/…/lib/libopencv_core.so:对‘pthread_spin_init’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_spin_unlock’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_key_create’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_getspecific’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_spin_lock’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_spin_destroy’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_once’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_spin_trylock’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_setspecific’未定义的引用

    解决方法:
    CMAKE_MODULE_LINKER_FLAGS:STRING=-pthread -lrt -ldl
    CMAKE_EXE_LINKER_FLAGS:STRING=-pthread -lrt
    //注意,有些系统是如下配置,反正我的ubuntu14.04只能是使用上面的配置
    (CMAKE_MODULE_LINKER_FLAGS:STRING=-lpthread -lrt
    CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt
    -lpthread都改为-pthread)

    错误3
    Linking CXX executable …/…/bin/opencv_createsamples
    …/…/lib/libopencv_core.so:对‘pthread_spin_init’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_spin_unlock’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_key_create’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_getspecific’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_spin_lock’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_spin_destroy’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_once’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_spin_trylock’未定义的引用
    …/…/lib/libopencv_core.so:对‘pthread_setspecific’未定义的引用
    collect2: error: ld returned 1 exit status
    make[2]: *** [bin/opencv_createsamples] 错误 1
    make[1]: *** [apps/haartraining/CMakeFiles/opencv_createsamples.dir/all] 错误 2
    make: *** [all] 错误 2
    尝试解决
    google之
    http://stackoverflow.com/questions/40246165/linking-issue-in-opencv-createsamples
    使用以上解决方法
    直接
    make
    然后
    make clean
    不行!!!!

    提示假如不用可以不编译
    Alternatively for you to continue you could disable building that if you are not using it.

    终极解决方法!!
    不编译这个apps模块!
    在cmake-gui中去掉BUILD_opencv_apps这一项的钩钩!!!
    ————————————————
    版权声明:本文为CSDN博主「沧海飞帆」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/ktigerhero3/article/details/71237410

  • 相关阅读:
    [POJ1811]Prime Test
    Pollard-rho算法[因子分解算法]
    Miller-Rabin算法
    [POJ2886]Who Gets the Most Candies?
    Failed to connect to raw.githubusercontent.com port 443
    MAC安装flutter开发环境
    Jenkins自动化打包(Gitlab)并上传蒲公英
    Jenkins中插件下载失败的解决办法
    iOS开发~防止navigation多次push一个页面
    Jenkins 更新 jenkins.war的方法
  • 原文地址:https://www.cnblogs.com/eastgeneral/p/11683640.html
Copyright © 2011-2022 走看看