【OpenCV3】Opencv3.2.0在Hisi3521下的交叉编译和移植
2017-06-13 11:32
441 查看
说明: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/ 进入编译文件夹。
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。
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_SYSROOT ENABLE_NEON ENABLE_VFPV3 CUDA_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。
相关文章推荐
- opencv2.0移植过程中zlib,jpeg,png库的交叉编译
- 交叉编译opencv2.31与移植至arm9
- Ubuntu16.04交叉编译OpenCV并移植
- ubuntu12.04交叉编译opencv移植到arm板
- OpenCV 2.0移植过程中zlib,jpeg,png库的交叉编译
- 交叉编译OpenCV2.2.0及移植到Tiny210
- ubuntu12.04交叉编译opencv移植到arm板
- 交叉编译opencv2.31与移植至arm9
- 交叉编译opencv2.31与移植至arm9
- 将交叉编译好的OpenCV移植到ARM平台
- 交叉编译opencv2.31与移植至arm9
- opencv2.0移植过程中zlib,jpeg,png库的交叉编译
- 交叉编译opencv2.31与移植至arm9
- Fedora8上交叉编译qtopia4移植成功到s3c2410开发板
- sqlite3数据库交叉编译并移植到嵌入式开发环境步骤
- [转]qtopia移植:交叉编译qtopia-2.2.
- ppp与pppoe 交叉编译移植
- ubuntu12.04下Python 3.5.3 +OpenCV 3.2.0编译环境搭建
- opencv2.0移植过程中zlib,jpeg,png库的交叉编译 .
- qt-everywhere-4.7.3-ARM交叉编译移植(四)