Opencv 交叉编译

参考:

https://www.cnblogs.com/emouse/archive/2013/04/01/2993842.html

https://blog.csdn.net/ktigerhero3/article/details/71237410

https://blog.csdn.net/weixin_42330265/article/details/80484978

 

  • 错误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

…/…/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’未定义的引用

解决方法:

修改CMakeCache.txt
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

  • 错误4

undefined reference to `png_init_filter_functions_neon'

交叉编译 opencv3.3.1 ffmpeg libpng

修改
${HOME}/opencv-3.3.1/3rdparty/libpng/pngpriv.h
 128 /*#  if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \*/
 129 #   if defined(PNG_ARM_NEON) && (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \

  • 错误5

No such file or directory #include "zlib.h"

修改

找到 3rdparty/libpng/CMakeLists.txt 
在ocv_include_directories 前面添加 set(ZLIB_INCLUDE_DIRS "/home/dyjun/opencv/git_opencv/opencv/3rdparty/zlib/")

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值