OneNet Video SDK 交叉编译方法

具体编译过程包括libmbedcrypto.a的交叉编译,video sdk的交叉编译。    

1. libmbedcrypto.a的交叉编译

mbedtls的源码安装包可以直接从github获得 https://github.com/ARMmbed/mbedtls . 我们采用的版本是mbedtls-2.8.0。

创建脚本mbedtls-development/make.sh,内容如下:
#/bin/sh                                                                   
rm -rf build_arm
mkdir build_arm
cd build_arm
cmake ..
make

编辑mbedtls-development/ CMakeLists.txt,在文件的开头增加以下内容,具体路径要根据个人开发环境。
cmake_minimum_required(VERSION 2.6)
project("mbed TLS" C)
SET(CMAKE_SYSTEM_NAME Linux)                                               
SET(TOOLCHAIN_DIR "/home/yulong/AP_0B07/linux_plat/base/build/usr")
SET(CMAKE_FIND_ROOT_PATH "${TOOLCHAIN_DIR}")
SET(CMAKE_C_COMPILER "${TOOLCHAIN_DIR}/bin/arm-linux-gcc")
SET(CMAKE_CXX_COMPILER "${TOOLCHAIN_DIR}/bin/arm-linux-g++")
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

在2.8.0版本中默认情况是不支持MBEDTLS_PLATFORM_MEMORY配置的,如果直接编译会造成最终生成的静态库mbedtls-development/build_arm/library/libmbedcrypto.a没有包含mbedtls_platform_set_calloc_free()等函数的定义。而OneNet Video SDK的链接过程会使用libmbedcrypto.a的这些函数,进而最终造成链接失败。所以,需要修改配置文件mbedtls-development/include/mbedtls/config.h,将MBEDTLS_PLATFORM_MEMORY取消注释。

在文件包根目录mbedtls-development/下执行./make.sh。编译成功。在目录mbedtls-development/build_arm/library下得到我们需要的文件libmbedcrypto.a。

 使用nm命令验证mbedtls_platform_set_calloc_free()函数是否已经被成功编译入静态库中:
yulong@yulong-virtual-machine:~/Downloads/mbedtls-development/build_arm/library$ ~/AP_0B07/linux_plat/base/build/usr/bin/arm-buildroot-linux-uclibcgnueabi-nm -a libmbedcrypto.a | grep -i mbedtls_platform_set_calloc_free
00000000 T mbedtls_platform_set_calloc_free

2. Video SDK的交叉编译

video_sdk-master的源码安装包可以直接从github获得 https://github.com/cm-heclouds/video_sdk

编辑文件video_sdk-master/linux-arm.txt,具体路径要根据个人开发环境。
SET(CMAKE_SYSTEM_NAME Linux)                                               
SET(TOOLCHAIN_DIR "/home/yulong/AP_0B07/linux_plat/base/build/usr")
SET(CMAKE_FIND_ROOT_PATH "${TOOLCHAIN_DIR}")
SET(CMAKE_C_COMPILER "${TOOLCHAIN_DIR}/bin/arm-linux-gcc")
SET(CMAKE_CXX_COMPILER "${TOOLCHAIN_DIR}/bin/arm-linux-g++")
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
#for libraries and headers in the target directories
#SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
#SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

Onvif需要SSL支持,首先对软件包openssl-1.0.1g交叉编译得到得到如下类库:
 

 编辑文件video_sdk-master/sample/CMakeLists.txt,在文件的适当位置增加以下内容,具体路径要根据个人开发环境。否则编译过程会报错。
if(UNIX OR CYGWIN)
if(ARM-LINUX)
add_definitions(-DXLOCALE_NOT_USED)
message("set the ssl lib path")
link_directories("/home/yulong/MyLib/myssl/lib")
endif(ARM-LINUX)
endif(UNIX OR CYGWIN)
在文件包根目录video_sdk-master/tools/下执行./videosamplebuild-arm.sh。编译成功。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值