Linux基于webRTC的⼆次开发(⼀)
最近在做Linux平台下webRTC的⼆次开发,⼀路摸索,中间踩了不少坑,这⼀篇博客先来简单介绍下Linux上如何使⽤GCC编译webRTC。
为什么使⽤GCC编译?
这其实是⽆奈之举,Linux下webRTC中的ninja⼯程使⽤的是Clang进⾏编译,且依赖其内置的stdc标准库。然⽽我现有的开发环境所使⽤的编译器为GCC,在使⽤Clang进⾏webRTC⼆次开发时遇到各种编译错误,只好改⽤GCC重新编译webRTC。
1.获取webRTC源码
需要准备⼀个梯⼦,同时使⽤⼯具进⾏终端穿墙。
获取源码流程可以查看官⽅⽂档
⾸先安装Chromium depot tools;
git clone lesource/chromium/tools/depot_tools.git
将depot tools路径添加道环境变量中
export PATH=$PATH:/path/to/depot_tools
然后获取webRTC源码
mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
gclient sync
webrtc源码下载下来很⼤,确保FQ⼯具有⾜够的流量
2.修改
如果不修改GN files会出现⼀堆错误,编译⽆法通过
关闭-Werror编译选项
build/config/
修改treat_warnings_as_errors=false
使⽤系统stdc标准库
build/config/c++/
注释掉
cflags_cc += [
"-nostdinc++"
]
cflags += ["-fno-builtin-abs"]
ldflags += ["-nodefaultlibs"]
libs += [
"c",
"gcc_s",
"m",
"rt",
]
cmake如何使用使⽤gcc编译命令为
gn gen webrtc-checkout/src/out/Default --args="is_clang=false"
ninja -C webrtc-checkout/src/out/Default
编译过程中可能会遇到因为源码问题导致编译出错,修改即可
编译成功后,即可使⽤gcc⼆次编译开发
注意编译时需添加⼀些编译选项
使⽤cmake构建⼯程时添加
set(CMAKE_CXX_FLAGS "-fno-rtti")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWEBRTC_LINUX=1 -DWEBRTC_POSIX=1")
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论