日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【OpenCV3】Opencv3.2.0在Hisi3521下的交叉编译和移植

發布時間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【OpenCV3】Opencv3.2.0在Hisi3521下的交叉编译和移植 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說明:hisi3521交叉編譯工具arm-hisiv300-linux已經配置完成,cmake已經安裝。

?

1.??????從官網(https://github.com/opencv/opencv/archive/3.2.0.tar.gz)下載opencv3.2.0源碼壓縮包。

2.??????將壓縮包上傳到Ubuntu下的工作目錄(/home/work)下,使用命令tar vxf opencv-3.2.0.tar.gz解壓到當前文件夾。

3.??????cd opencv-3.2.0/platforms/linux進入linux編譯目錄。

4. ? sudogedit arm.toolchain.cmake修改該cmake文件內容如下:


5.??????在當前文件夾下新建編譯文件夾mkdir build_hisi; cd build_hisi/ 進入編譯文件夾。


if(COMMAND toolchain_save_config)return() # prevent recursive call endif()set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_VERSION 1) if(NOT DEFINED CMAKE_SYSTEM_PROCESSOR)set(CMAKE_SYSTEM_PROCESSOR arm-hisiv300-linux-gnueabi) else()#message("CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}") endif()include("${CMAKE_CURRENT_LIST_DIR}/gnu.toolchain.cmake")if(CMAKE_SYSTEM_PROCESSOR STREQUAL arm AND NOT ARM_IGNORE_FP)set(FLOAT_ABI_SUFFIX "")if(NOT SOFTFP)set(FLOAT_ABI_SUFFIX "hf")endif() endif()if(NOT "x${GCC_COMPILER_VERSION}" STREQUAL "x")set(__GCC_VER_SUFFIX "4.6" CACHE STRING "GCC Compiler version") endif()#CROSS COMPILE SETTING set(TOOLCHAIN_DIR "/opt/hisi-linux/x86-arm/arm-hisiv300-linux/") set(CMAKE_C_COMPILER "/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/arm-hisiv300-linux-uclibcgnueabi-gcc") set(CMAKE_CXX_COMPILER "/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/arm-hisiv300-linux-uclibcgnueabi-g++") set(CMAKE_FIND_ROOT_PATH /opt/hisi-linux/ /opt/hisi-linux/x86-arm/arm-hisiv300-linux/) set(ARM_LINUX_SYSROOT /opt/hisi-linux/x86-arm/arm-hisiv300-linux/ CACHE PATH "ARM cross compile system root")MESSAGE(STATUS "This is cross compile dir --->"$(CMAKE_C_COMPILER))#if(NOT DEFINED CMAKE_C_COMPILER) # find_program(CMAKE_C_COMPILER NAMES ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-gcc${__GCC_VER_SUFFIX}) #else() # #message(WARNING "CMAKE_C_COMPILER=${CMAKE_C_COMPILER} is defined") #endif() #if(NOT DEFINED CMAKE_CXX_COMPILER) # find_program(CMAKE_CXX_COMPILER NAMES ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-g++${__GCC_VER_SUFFIX}) #else()#message(WARNING "CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} is defined") #endif() #if(NOT DEFINED CMAKE_LINKER) # find_program(CMAKE_LINKER NAMES ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-ld${__GCC_VER_SUFFIX} ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-ld) #else() # #message(WARNING "CMAKE_LINKER=${CMAKE_LINKER} is defined") #endif() #if(NOT DEFINED CMAKE_AR) # find_program(CMAKE_AR NAMES ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-ar${__GCC_VER_SUFFIX} ${GNU_MACHINE}${FLOAT_ABI_SUFFIX}-ar) #else() # #message(WARNING "CMAKE_AR=${CMAKE_AR} is defined") #endif()#if(NOT DEFINED ARM_LINUX_SYSROOT AND DEFINED GNU_MACHINE) # set(ARM_LINUX_SYSROOT /usr/${GNU_MACHINE}${FLOAT_ABI_SUFFIX}) #endif()#if(NOT DEFINED CMAKE_CXX_FLAGS) # set(CMAKE_CXX_FLAGS "" CACHE INTERAL "") # set(CMAKE_C_FLAGS "" CACHE INTERAL "") # set(CMAKE_SHARED_LINKER_FLAGS "" CACHE INTERAL "") # set(CMAKE_MODULE_LINKER_FLAGS "" CACHE INTERAL "") # set(CMAKE_EXE_LINKER_FLAGS "" CACHE INTERAL "")# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") # if(CMAKE_SYSTEM_PROCESSOR STREQUAL arm) # set(CMAKE_CXX_FLAGS "-mthumb ${CMAKE_CXX_FLAGS}") # set(CMAKE_C_FLAGS "-mthumb ${CMAKE_C_FLAGS}") # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,nocopyreloc") # endif() # if(CMAKE_SYSTEM_PROCESSOR STREQUAL arm) # set(ARM_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now") # elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64) # set(ARM_LINKER_FLAGS "-Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now") # endif() # set(CMAKE_SHARED_LINKER_FLAGS "${ARM_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS}") # set(CMAKE_MODULE_LINKER_FLAGS "${ARM_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS}") # set(CMAKE_EXE_LINKER_FLAGS "${ARM_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}") #else() # #message(WARNING "CMAKE_CXX_FLAGS='${CMAKE_CXX_FLAGS}' is defined") #endif()set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mthumb -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mthumb -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi")set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_SHARED_LINKER_FLAGS}") set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_MODULE_LINKER_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now ${CMAKE_EXE_LINKER_FLAGS}")if(USE_NEON)message(WARNING "You use obsolete variable USE_NEON to enable NEON instruction set. Use -DENABLE_NEON=ON instead." )set(ENABLE_NEON TRUE) elseif(USE_VFPV3)message(WARNING "You use obsolete variable USE_VFPV3 to enable VFPV3 instruction set. Use -DENABLE_VFPV3=ON instead." )set(ENABLE_VFPV3 TRUE) endif()#set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${ARM_LINUX_SYSROOT})if(EXISTS ${CUDA_TOOLKIT_ROOT_DIR})set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${CUDA_TOOLKIT_ROOT_DIR}) endif()set(TOOLCHAIN_CONFIG_VARS ${TOOLCHAIN_CONFIG_VARS}ARM_LINUX_SYSROOTENABLE_NEONENABLE_VFPV3CUDA_TOOLKIT_ROOT_DIR )set( CMAKE_SKIP_RPATH TRUE CACHE BOOL "If set, runtime paths are not added when using shared libraries." ) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)# macro to find programs on the host OS macro( find_host_program )set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER )set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER )if( CMAKE_HOST_WIN32 )SET( WIN32 1 )SET( UNIX )elseif( CMAKE_HOST_APPLE )SET( APPLE 1 )SET( UNIX )endif()find_program( ${ARGN} )SET( WIN32 )SET( APPLE )SET( UNIX 1 )set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY )set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) endmacro()# macro to find packages on the host OS macro( find_host_package )set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER )set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER )if( CMAKE_HOST_WIN32 )SET( WIN32 1 )SET( UNIX )elseif( CMAKE_HOST_APPLE )SET( APPLE 1 )SET( UNIX )endif()find_package( ${ARGN} )SET( WIN32 )SET( APPLE )SET( UNIX 1 )set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY )set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) endmacro() toolchain_save_config()


6.??????cmake -DCMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=../install_dir -D SOFTFP=ON -DENABLE_NEON=ON -D CMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake ../../../

7.??????配置完成后執行make編譯

8.??????編譯完成后執行make install安裝。

9.??????執行命令cd /etc/ld.so.conf.d/,在該文件夾下新建文件sudo gedit opencv_hisi.conf,輸入{安裝目錄}lib.

10.??????保存退出,執行sudo ldconfig。

11.??????sudo gedit /etc/bash.bashrc在末尾添加:

OH_PKG_CONFIG_PATH=$OH_PKG_CONFIG_PATH:/home/philos/work/Libraries/opencv/lib/pkgconfigexport OH_PKG_CONFIG_PATH。

12.??????保存退出,執行sudo source /etc/bash.bashrc。





總結

以上是生活随笔為你收集整理的【OpenCV3】Opencv3.2.0在Hisi3521下的交叉编译和移植的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。