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過程中有可能修改上述文件).

以上是我碰見的所有問題.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM