说明: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下的交叉编译和移植相关推荐

  1. linux编译linphone,Ubuntu下linphone交叉编译与移植

    移植前搞清楚linphone依赖库的关系,这个一般是移植工作的关键所在,还有一个关键是目标平台的交叉编译器. linphone-3.1.0依赖的库如下: speex(又依赖libogg) libosi ...

  2. LINPHONE在嵌入式LINUX下的交叉编译和移植

    注:此过程仅适合LINPHONE3.6.1以下的版本,高版本的编译有所不同 QQ交流:63314957 环境变量: export PREFIX=/usr export HOSTTPL=arm-linu ...

  3. opencv-3.4.3 交叉编译并且移植到高通820开发板(包括Qt 5.11.2部分交叉编译及移植),NEON OpenCV编译

    opencv-3.4.3 交叉编译并且移植到高通820开发板(包括Qt 5.11.2部分交叉编译及移植),NEON OpenCV编译 原文我是用有道笔记记录的,下面排版不是很好,可参看有道笔记原文:h ...

  4. 瑞友天翼4.0在XP下安装注意事项

    瑞友天翼4.0在XP下安装注意事项 此版本只支持Windows Xp Professinal SP2下安装.如果你的Xp不是SP2请按照一下方法修改操作系统,并安装Xp的SP2补丁包!+ o( f+ ...

  5. MySql4.1.7 + PHP5 + Apache2.0.52(win2003下测试通过)

    MySql4.1.7 + PHP5 + Apache2.0.52(win2003下测试通过) 1.下载 2.安装 解压 3.配置 Apache与PHP的整合: 3a).与3b).任选一种,我是选3a) ...

  6. Windows10+CUDA8.0+VS2015+CUDNN5下配置caffe

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zhj_matlab/article/details/69943869 </div>< ...

  7. Android 4.0.4系统下实现apk的静默安装和启动

    转自http://www.linuxidc.com/Linux/2013-02/79403.htm 未亲测 最近在Android 4.0.4系统下实现apk的静默安装和启动的功能,这里和大家分享一下, ...

  8. 【USB笔记】USB2.0 不同传输类型下的理论最大速率

    USB笔记 USB2.0 不同传输类型下的理论最大速率 USB2.0协议中定义了三种速率,低速(low speed),全速(full speed),高速(high speed). 最大速率如下: 最大 ...

  9. mysql权限认证_MySQL 8.0权限认证(下)

    MySQL 8.0权限认证(下) 一.设置MySQL用户资源限制 通过设置全局变量max_user_connections可以限制所有用户在同一时间连接MySQL实例的数量,但此参数无法对每个用户区别 ...

最新文章

  1. MySQL面试题 | 附答案解析(四)
  2. 去伪存真:因果约束下的图神经网络泛化
  3. [BZOJ 4563]放棋子
  4. 【微服务学习】Polly:熔断降级组件
  5. Spring Bean初始化过程
  6. Git合并两个不同的仓库
  7. C/C++ 进阶 —— static
  8. 图像处理与计算机视觉经典文章
  9. Python数据结构与算法(1.1)——数据结构与算法导论
  10. jquery之提示信息
  11. COMSOL6.0 版本新功能:求解大型瞬态声学问题
  12. MinGW-w64的安装及配置教程
  13. c语言判断素数 是返回1,c语言编程:设计一个函数用于判断一个数是否为素数,如果是素数返回1,否则返回0。...
  14. 小红书用户画像分析_用户画像,该怎么分析?
  15. Excel输入公式计算只显示公式不出结果
  16. SAP SMW0 上传EXCEL模板
  17. steamship 使用gpt-4
  18. matlab进行mppt控制仿真,基于matlab光伏发电系统的MPPT控制与仿真.pdf
  19. CSDN这个家比博客园温馨好多啊,我要搬家了。。。
  20. java生成excel并输出到浏览器下载

热门文章

  1. Java 8 - 收集器Collectors_分区partitioningBy
  2. Apache Kafka-初体验Kafka(01)-入门整体认识kafka
  3. 修改centos等linux的hostname-永久生效
  4. EFI启动PE加Linux,macOS安装盘制作并添加EFI和WinPE
  5. centos7.6基础
  6. ubuntu笔记:查看Ubuntu的包依赖关系
  7. c4d支持mac系统渲染器有哪些_C4D常用的4大主流渲染器如何选择与比较 (OC/RS/VR/阿诺德)...
  8. 基于MATLAB的小波收缩法信号去噪
  9. uboot启动流程概述_关于RISCV启动部分的思考~
  10. mysql cluster java_Java学习笔记(十):MySQL集群安装配置