opencv arm 編譯靜態庫

1.首先下載opencv

通過腳本: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)
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章