webrtc Intel owt native源码Ubuntu编译踩坑记录

10/18 12:08
阅读数 92

        最近在研究音视频通话方案,webrtc是一个相对比较完美的解决方案,服务器搭建使用Intel那套。而我们研究的是设备native端,需要从Google拉源码,交叉编译webrtc并移植,计划前期先在Ubuntu上跑通demo。

前期步骤参考github官方文档弄:https://github.com/open-webrtc-toolkit/owt-client-native

拉源码是个漫长的过程,建议弄个vpn或者国外租台服务器。

编译环境:阿里云Ubuntu16.04/虚拟机桌面版Ubuntu18.04

阿里云 gcc版本:

Ubuntu18.04 gcc版本:(为了跟阿里云环境保持相同,特地将Gcc 7.x降级为GCC5.x)

编译脚本参数:

python scripts/build_linux.py --arch x64  --gn_gen --docs --sdk  --output_path  /home/fangye/build/src/out --scheme debug --use_gcc

 

编译过程中遇到的问题:

1. gcc版本低于5.2,无法支持std=gnu++14

解决办法:升级gcc版本 

https://blog.csdn.net/qingrenufo/article/details/78661513

2. 编译clang版本,不满足Google语法检测。

解决方法: 参考 https://blog.csdn.net/csdn_idiot/article/details/106358305 

修改脚本,增加参数clang_use_chrome_plugins=false ,忽略代码风格检查即可。

编译过程中遇到的问题2: 

../../third_party/webrtc/rtc_base/openssl_utility_unittest.cc:230:34: error: 'DTLSv1_2_client_method' is deprecated [-Werror,-Wdeprecated-declarations]
SSL_CTX* ssl_ctx = SSL_CTX_new(DTLSv1_2_client_method());

解决办法:

配置好正确的openssl版本跟和root路径,或者编译的时候直接不要指定--ssl_root就好了。

问题3:未找到isfinite定义

 解决办法:在isfinite前增加std::

 修改的文件有:third_party/webrtc/modules/audio_processing/echo_detector/mean_variance_estimator.cc

third_party/webrtc/modules/audio_processing/echo_detector/mean_variance_estimator.cc

问题四:编译报错

/usr/include/c++/5/ext/new_allocator.h:120:4: error: no matching function for call to ‘std::pair<webrtc::Module* const, std::unique_ptr<webrtc::ExternalTimeController::ProcessThreadWrapper::ModuleWrapper> >::pair(webrtc::Module*&, webrtc::ExternalTimeController::ProcessThreadWrapper::ModuleWrapper*)

解决办法:目前没找到好的解决办法,不过既然是test模块下的代码,那就不编译test模块就好了呀。

执行命令中不要加--test, 如下所示。

python build_linux.py --arch x64 --gn_gen --sdk --output_path /home/fangye/build/src/out --scheme release --use_gcc

 问题五:都编完了报个这个错 IOError: [Errno 2] No such file or directory: 'out/release-x64/obj/talk/owt/libowt.a‘

解决办法:官方github上说要在script目录下执行, 而现在却提示没有文件或目录, 查看了下目录结构,这明显是要在src目录下执行才对呀。


以上是在阿里云ubuntu16.04服务器上编译遇到的问题,下面是在虚拟机Ubuntu18.04上遇到的问题,真的是恶心坏了。。


问题1:编译脚本无法正常执行   OSError: [Errno 2] No such file or directory

引起原因及解决办法:未配置depot_tools,将depot_tools下工具所在目录添加至PATH环境变量目录(路径记得换成你自己的 ):

export PATH="$PATH:/home/fangye/projects/owt_project/build/depot_tools"

为避免每次打开终端都要执行,建议将该命令加入~/.bashrc中。

问题2:ERROR at //build/config/linux/pkg_config.gni:103:17: Script returned non-zero exit code.

解决办法:安装pkg-config

sudo apt-get install pkg-config

 问题3:提示pkg_config找不到glib-2.0.pc等文件

解决方法:

找一下这些文件在哪,把文件夹加到PKG_CONFIG_PATH

sudo find / -name glib-2.0.pc
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:<glib-2.0.pc文件所在绝对路径>

 问题4:fatal error: alsa/asoundlib.h: No such file or directory

解决办法:安装asound相关依赖库

sudo apt-get install libasound2-dev

顺便把下面这两个也装一下吧,也可以先不用管了,遇到头文件找不到的问题再来这里找:

sudo apt-get install libpulse-dev
sudo apt-get install libx11-dev 
sudo apt-get install x11proto-xext-dev
sudo apt-get install libxext-dev
sudo apt-get install libxfixes-dev
sudo apt-get install libxdamage-dev

问题5:fatal error: X11/extensions/Xrandr.h: No such file or directory

 解决办法: 装酷...

sudo apt-get install libxrandr-dev

 问题6:fatal error: X11/extensions/Xcomposite.h: No such file or directory

继续装...装不了的同学更新一下源,我用的阿里源。

sudo apt-get install libxcomposite-dev

如果有还有什么头文件找不到,参照这个套路弄吧,之前还想通过改编译脚本,简直要崩溃。

问题7:编完了报错


解决办法:要生成文档,就把doxgen装一下。

sudo apt-get install doxygen

至此,编译完成。

如上总结,可能还存在一些遗漏,遇到问题欢迎留言,一起探讨。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部