交叉编译启用webrtc的zlmediakit

1.编译环境

        系统:ubuntu14.04

        cmake:version 3.12.4

        交叉编译链:aarch64-himix200-linux

2.依赖准备        

  • 32位系统兼容库
$ apt-get install lib32z1-dev lib32ncurses5

/**************************************************************
install lib32z1-dev lib32ncurses5--编译主机是64位的,缺少32位兼容库,需要先装该两个库,否则后续编译时会提示cannot found aarch64-himix200-linux,
如果安装失败,尝试更改镜像源改为阿里云源,然后再使用apt-get update与apt-get upgrade命令
****************************************************************/
  • openssl(版本要求1.1以上)
$ wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
$ tar -xvzf openssl-1.1.1k.tar.gz
$ apt-get install zlib zlib-devel perl-CPAN
$ cd openssl-1.1.1k
$ export PATH=/opt/aarch64-himix200-linux/bin:$PATH
$ ./config no-asm --prefix=/usr/openssl --cross-compile-prefix=aarch64-himix200-linux-
$ vi Makefile    //注释掉文件中的 CNF_CFLAGS=-pthread -m64 与 CNF_CXXFLAGS=-std=c++11 -pthread -m64中的 -m64 并保存
$ make
$ make install

/**************************************************************
export PATH--将交叉编译可执行文件目录添加到环境变量

no-asm--禁用使用汇编语言加速,确保程序在所有平台上都能正常运行
prefix--指定安装路径
cross-compile-prefix--指定交叉编译工具链命令的前缀,此时实际会使用到/opt/aarch64-himix200-linux/bin/aarch64-himix200-linux-gcc

注释掉CNF_CFLAGS=-pthread -m64 与 CNF_CXXFLAGS=-std=c++11 -pthread -m64中的 -m64 是因为arm下不支持64位,不注释会在make时提示unrecognized command line option '-m64'错误
****************************************************************/
  • libsrtp

        下载地址:https://codeload.github.com/cisco/libsrtp/tar.gz/refs/tags/v2.3.0

$ tar -xvzf libsrtp-2.3.0.tar.gz
$ cd libsrtp-2.3.0
$ vi configure    //将5902行中的 "$cross_compiling" = yes 改为 "$cross_compiling" = no 并保存
$ ./configure --prefix=/usr/libsrtp --host aarch64-himix200-linux CC=/opt/aarch64-himix200-linux/bin/aarch64-himix200-linux-gcc 
--enable-openssl --with-openssl-dir=/usr/openssl
$ make
$ make install

/**************************************************************
将5902行中的 "$cross_compiling" = yes 改为 "$cross_compiling" = no是因为arm下不支持测试程序。也可以注释掉then后的内容

prefix--指定安装路径
host--指定目标系统环境
CC--指定编译器
enable-openssl--启用openssl
with-openssl-dir--指定openssl的根目录
****************************************************************/

configure

3.编译zlmediakit

  • 下载源码
$ git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
$ cd ZLMediaKit
$ git submodule update --init
  • 编译
$ mkdir build
$ cd build
$ vi ../cmake/FindSRTP.cmake    //注释掉两个 find_path 部分并且添加两行指令并保存,见下方
$ touch ../cmake/aarch64.cmake
$ vi ../cmake/aarch64.cmake    //内容见下方
$ cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/aarch64.cmake -DENABLE_WEBRTC=true -DENABLE_OPENSSL=true 
-DOPENSSL_ROOT_DIR=/usr/openssl -DOPENSSL_LIBRARIES=/usr/openssl/lib -DCMAKE_BUILD_TYPE=Release 
-DCMAKE_PREFIX_PATH="/usr/openssl"
$ cmake --build . --target MediaServer

/**************************************************************
修改FindSRTP.cmake--不修改文件指定libsrtp的头文件与库文件路径的话在编译时会寻找到正常非交叉编译版本的libsrtp路径,最后会链接失败,提示Relocations in generic ELF (EM: 62)

aarch64.cmake--交叉编译工具链cmake变量文件

DCMAKE_TOOLCHAIN_FILE--指定CMake使用的工具链文件的变量
DENABLE_WEBRTC--启用webrtc
DENABLE_OPENSSL--启用openssl
DOPENSSL_ROOT_DIR--指定openssl根目录
DOPENSSL_LIBRARIES--指定openssl库目录
DCMAKE_BUILD_TYPE--编译发布版本
DCMAKE_PREFIX_PATH--指定第三方库搜索路径

编译成功后的可执行程序在 ../release/linux/Release/ 中
****************************************************************/

FindSRTP.cmake

aarch64.cmake

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值