webrtc 编译linux版本的各种问题

3 篇文章 0 订阅
2 篇文章 0 订阅

下载和编译参照:http://depthlove.github.io/2019/05/02/webrtc-development-2-source-code-download-and-build/

最后的编译选项:

gn gen out/linux --args='target_os="linux" target_cpu="x64" is_debug=false is_clang=false treat_warnings_as_errors=false rtc_include_tests=false is_component_build=false use_custom_libcxx=false rtc_enable_protobuf=false'

1、连接webrtc静态库时候出现:error adding symbols: Malformed archive

vi build/config/compiler/BUILD.gn

搜索 complete_static_lib

去掉arflags = [ "-T" ] ,不用-T

连接:https://bugs.chromium.org/p/chromium/issues/detail?id=801925

 

2、GLIBCXX_3.4.20 not found(required by /home/webrtc/src/lout/linux/protoc)

可以升级libstdc++6.so的库

或者rtc_enable_protobuf=false 不使用protobuf

 

3、用GCC编译器而不是clang编译,选项is_clang=false、

3.1出现各种警告导致错误退出

declared with attribute warn_unused_result [-Werror=unused-result]

解决——添加选项:is_clang=false treat_warnings_as_errors=falsse

3.2 ../../webrtc/base/array_view_unittest.cc:219:26: error: use of deleted function ‘rtc::BufferT<T>::BufferT(const rtc::BufferT<T>&) [with T = unsigned char]’

const rtc::Buffer cb = "very const";

解决——添加选项:rtc_include_tests=false

 

4、连接时候各种C++库连接不了问题

解决:use_custom_libcxx=false这是用来控制编译WebRtc时使用的c++库的。原因很简单,如果不加这个编译开关的话,WebRtc编译默认使用libc++来编译,而我们编译别的代码用的是libstdc++,这样在编译的过程中就会导致用到std::string的地方各种错误

但是不要用这个选项use_custom_libcxx_for_host=false不然会有各种库问题

6、fatal error: list: No such file or directory#include <list>

解决——export CPLUS_INCLUDE_PATH=/usr/include/c++/4.8:/usr/include/x86_64-linux-gnu/c++/4.8:$CPLUS_INCLUDE_PATH

 

5、webrtc编译出来的是静态库,如果你在编译一个动态库时候引用这个libwebrtc.a静态库,那么再用这个动态库取连接最终的应用程序时候,会报找不到webrtc的里面的标识。这个是本身特性的影响,如果要这样用,那么编译静态库时候要加入选项 -fPIC:表示编译为位置独立(地址无关)的代码 才允许这样使用。——因为webrtc编译还没有去人看,怎么加入这个选项,那么只能把代码中的libvrtp.so库去掉,直接编译执行程序。

 

插曲:

1、因为连接webrtc静态库时候出现:error adding symbols: Malformed archive问题,想看看静态库是否生成正确。才知道原来静态库可以解压成一个个.o文件,并且可以把多个静态库压缩成一个。

ar x /usr/local/lib/A.a——解压

ar x /usr/local/lib/B.a

ar x /usr/local/lib/C.a

ar cru libABC.a *.o——压缩

ranlib libABC.a——更新静态库的符号索引表 

 

2、apt-get 安装程序时候出现版本依赖问题

apt : Depends: libstdc++6 (>= 4.6) but it is not going to be installed

解决——2.1、通过ubuntu官网下载对应的deb包安装。

2.2、通过已有的机器在目录/var/cache/apt/archives/下查找对应的包,拷贝过去安装。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值