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。编译成功。



阅读更多
个人分类: IOT Techonology
上一篇Window7通过samba服务共享虚拟机中Linux的目录
想对作者说点什么? 我来说一句

onenet云服务器的安卓开发包

2018年03月30日 1.01MB 下载

nbiot_sdk-master

2017年07月21日 215KB 下载

NB-iot SDK包移植文档-BC95-B8

2017年07月21日 265KB 下载

中移nb工具串口(nb-iot,onenet)

2018年01月23日 145KB 下载

没有更多推荐了,返回首页

关闭
关闭