通過腳本:https://github.com/azuredsky/Install-OpenCV
2.安裝cmake ,arm 交叉編譯工具
3.開始camke
選擇Unix Makefiles -> Specify options for cross-compiling
2.配置arm compilers
Target System:
Operating System :Linux
Version: 3.4.3
Processor:arm
Compilers:
C:/opt/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc (arm gcc 編譯器)
C++:/opt/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ (arm g++ 編譯器)
Find Program/Library/include:
Target Root: /opt/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu (arm 編譯器目錄)
3.選擇編譯事項
設置安裝目錄:CMAKE_INSTALL_PREFIX: /usr/local/arm-opencv
取消以下勾選:
BUILD_PNG
BUILD_JPEG
BUILD_SHARED_LIBS(這裏我們要編譯靜態庫)
關閉以下選項,設爲False
WITH_1394
WITH_CUDA
WITH_CUFFT X
WITH_EIGEN
WITH_GSTREAMER
WITH_GTK
WITH_JASPER
WITH_JPEG
WITH_OPENEXR
WITH_PNG
WITH_PVAPI
WITH_QT
WITH_TBB
WITH_TIFF
WITH_UNICAP X
WITH_V4L
WITH_XINE
WITH_EIGEN
WITH_IPP
BUILD_ZLIB
BUILD_opencv_gapi
BUILD_IPP_IW
刪除不需要的host庫
-delete ZLIB_INCLUDE_DIR
-delete ZLIB_LIBRARY_PATH
4.開始編譯
make -j6
sudo make install
5.開發工程添加鏈接
注意:在鏈接靜態庫時請務必將libzlib.a 放在最後一項鍊接(否則會報以下錯誤:
persistence.cpp:(.text.cvOpenFileStorage+0x66e): undefined reference to `gzopen' persistence.cpp:(.text.cvOpenFileStorage+0x8fc): undefined reference to `gzclose' persistence.cpp:(.text.cvOpenFileStorage+0xaea): undefined reference to `gzrewind' persistence.cpp:(.text.cvOpenFileStorage+0xbee): undefined reference to `gzrewind' persistence.cpp:(.text.cvOpenFileStorage+0xc0a): undefined reference to `gzclose'
)
6.如果在cmake 中出現問題參考:https://blog.csdn.net/qq2010899751/article/details/82533262
我在編譯中出現NEON 問題:
undefined reference to `png_init_filter_functions_neon'
修改:opencv-3.4.3/3rdparty/libpng/CMakeLists.txt
添加以下兩行
set(ENABLE_NEON ON)
set(AARCH64 ON)