opencv3.4.9 + armv7 + arm-linux-gnueabihf交叉编译

编译器等基本设置不再赘述,记录在编译时遇到的一些问题及解决办法:

1.

pthread dl库链接不上,找不到pthread dl相关的函数定义:解决办法为首先修改build目录下的CMakeCache.txt,

CMAKE_EXE_LINKER_FLAGS:STRING=-pthread -ldl

CMAKE_MODULE_LINKER_FLAGS:STRING=-pthread -ldl

再编译,此时有可能仍然报找不到dl***之类的错误,此时需要查看具体是哪一个模块,进入到其编译目录,修改link.txt(我的是/opencv-3.4.9/build-aarch/modules/core/CMakeFiles/opencv_core.dir/link.txt,报错的本质原因就是该文档中没有链接相关的库),在文本最后追加-pthread -ldl(一定要加到最后面,dl库不知道为什么一定要在最后).然后重新编译.

2.

/grfmt_jpeg.cpp:224:58: error: invalid conversion from ‘uchar* {aka unsigned char*}’ to ‘const JOCTET* {aka const char*}’ [-fpermissive]错误;

解决办法:修改build目录下的CMakeCache.txt,

CMAKE_CXX_FLAGS:STRING=-fpermissive

3.

../../lib/libopencv_imgcodecs.so:对‘png_init_filter_functions_neon’未定义的引用 
../../lib/libopencv_imgcodecs.so:对‘png_riffle_palette_rgba’未定义的引用
../../lib/libopencv_imgcodecs.so:对‘png_do_expand_palette_neon_rgb’未定义的引用
../../lib/libopencv_imgcodecs.so:对‘png_do_expand_palette_neon_rgba’未定义的引用
collect2: 错误: ld 返回 1

修改opencv下的 /3rdparty/libpng/pngpriv.h  130行

#  if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \

改为

 #   if defined(PNG_ARM_NEON) && (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \

4.在安装完成之前,保证上面的修改是有效的(make过程中有可能修改上述文件).

以上是我碰见的所有问题.

posted on 2020-05-06 09:39  明太宗朱棣  阅读(2148)  评论(0编辑  收藏  举报

导航