前言:有一位大神在博客中说: (2019年9月之前的版本,这之后的版本默认是C++14的(由git log可获取该信息),用海思编译器编译会有问题,release版本的分支号branch-heads/m77,这个版本之前的应该都可以。)如果更高的版本在海思arm-hisiv500-linux 可以编译,还请指导。

鉴于这个原因,本文也是用M77版本在海思平台上编译;

如果所在的编译环境有网络,那么可以参照如上的博客操作,我这边因为编译环境无法访问外网,需要用到docker。将下载好编译环境的镜像(Ubuntu)通过docker来加载镜像。

首先需要使用docker基于一个已有的镜像来新建容器进行操作,这里是基于ubuntu镜像来新建容器。这里会创建一个ubuntu操作系统的主机容器,类似于一个虚拟机来使用。

 docker load -i ubuntu.tar (ubuntu.tar是具备编译webrtc的环境的镜像)

常用docker命令:

sudo docker images ##查看当前本地可用镜像
sudo docker ps ##查看正在运行的容器id
sudo docker ps -a ##查看创建的所有的容器id,包括正在运行,和停止的

docker container ls -a ##可以列举出所有的容器,包括正在运行的和没有运行的容器

接下来,创建容器:

# -i 交互式 -t 分配一个伪终端 -d 运行容器到后台
$ docker container run -itd - <container> <image>

映射自己的webrtc目录和编译工具的目录到docker:

docker container run -itd --name myname -v local_sourcepath:docker_path -v local_tooltain_path:docker_tooltain_path ubuntu16.04:arm

进入容器的伪终端 :

$ docker exec -it <container-name>  /bin/bash

 设置好环境变量后,执行编译命令:

#/!bin/bash

gn gen out/arm_hisi --args='target_os="linux" target_cpu="arm" arm_arch="armv7-a" 
 arm_tune="cortex-a7" arm_version=7 
 arm_optionally_use_neon=true arm_fpu="neon-vfpv4" 
 is_clang=false 
 is_debug=false 
 is_nacl_glibc=true 
 libyuv_use_neon=true 
 rtc_build_with_neon=true 
 rtc_include_internal_audio_device=false 
 rtc_include_pulse_audio=false 
 rtc_libvpx_build_vp9=false 
 rtc_use_gtk=false 
 strip_debug_info=true 
 treat_warnings_as_errors=false 
 use_aura=false use_dbus=false 
 use_gold=true use_goma=false 
 use_lld=false use_ozone=false 
 use_udev=false 
 rtc_build_examples=false 
 rtc_build_tools=false 
 rtc_include_tests=false 
 use_glib=false 
 rtc_use_x11 = false 
 arm_float_abi="softfp" 
 rtc_use_pipewire=false  
 use_custom_libcxx=false 
 rtc_use_h264=true 
 proprietary_codecs=true 
 rtc_enable_protobuf=false 
 use_rtti=true 
 rtc_build_json=true  
 ffmpeg_branding="Chrome"  
 use_openh264=true use_custom_libcxx_for_host=false'
ninja -C out/arm_hisi

这里面的其他操作都一样

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐