Linux基于webRTC的二次开发(一)

简介: Linux基于webRTC的二次开发(一)

为什么使用GCC编译?

这其实是无奈之举,Linux下webRTC中的ninja工程使用的是Clang进行编译,且依赖其内置的stdc标准库。然而我现有的开发环境所使用的编译器为GCC,在使用Clang进行webRTC二次开发时遇到各种编译错误,只好改用GCC重新编译webRTC。

1.获取webRTC源码

需要准备一个梯子,同时使用工具进行终端穿墙。

获取源码流程可以查看官方文档https://webrtc.org/native-code/development/

首先安装Chromium depot tools;

git clone https://chromium.googlesource.com/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源码下载下来很大,确保翻墙工具有足够的流量

2.修改BUILD.gn

如果不修改GN files会出现一堆错误,编译无法通过

关闭-Werror编译选项

build/config/complier/BUILD.gn

修改treat_warnings_as_errors=false

使用系统stdc标准库

build/config/c++/BUILD.gn

注释掉

cflags_cc += [
    "-nostdinc++"
]
cflags += ["-fno-builtin-abs"]
ldflags += ["-nodefaultlibs"]
libs += [
    "c",
    "gcc_s",
    "m",
    "rt",
]

使用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")



相关文章
|
Web App开发 编解码 安全
【WebRTC 入门教程】全面解析WebRTC:从底层原理到Qt和FFmpeg的集成应用
【WebRTC 入门教程】全面解析WebRTC:从底层原理到Qt和FFmpeg的集成应用
7231 2
|
Web App开发 应用服务中间件 Go
尝鲜:如何搭建一个简单的webrtc服务器
前几天我一朋友问我有关webrtc的事,简单了解了下相关知识,搭建了一个webrtc的服务,以及经历的各种踩坑事件,感觉踩坑主要是Python、Node、OpenSSL等版本问题和证书问题导致。本来以为很简单的搭建,但在搭建的过程中遇到各种阻碍,写一篇文章梳理一下。
13682 0
|
Linux Docker 容器
CentOS7离线安装Docker
CentOS7离线安装Docker
2959 0
|
10月前
|
Web App开发 前端开发 Ubuntu
WebRTC项目中的janus安装和编译教程
但是请记住,这只是开始。Janus只是一个服务器,你还需要为其配置前端界面,通过Janus与前端进行通信。你可能需要看一些关于WebRTC,JavaScript,HTTP,WebSocket等知识,去完善你的WebRTC项目。像搭积木一样,一块块的知识是你的乐高,用心去搭建,你会创造出美妙的作品。
457 12
|
Ubuntu Linux 编译器
openssl 的编译(linux、Ubuntu) 和 交叉编译(arm、Hi3531A)的问题分析、解决
openssl 的编译(linux、Ubuntu) 和 交叉编译(arm、Hi3531A)的问题分析、解决
2883 0
|
存储 Linux Android开发
Rockchip系列之VendorStorage uboot/kernel/user space 阶段接口使用介绍(2)
Rockchip系列之VendorStorage uboot/kernel/user space 阶段接口使用介绍(2)
1487 0
|
编解码 监控 网络协议
如何用魔法般的步骤实现RTSP推送H.264与H.265(HEVC),打造震撼视听盛宴,让每一帧都充满魔力!
【9月更文挑战第3天】实现RTSP流媒体服务推送H.264和H.265编码视频是现代视频监控及直播平台的关键技术。本文详细介绍环境搭建、编码配置及服务器与客户端实现方法。首先,通过FFmpeg捕获视频并编码成RTSP流,接着使用VLC等工具接收播放。此外,还提供了C++示例代码,演示如何利用libv4l2和FFmpeg自定义服务器端实现。希望本文能帮助读者成功搭建RTSP视频流系统。
2626 1
|
网络架构
深入了解会话描述协议(SDP)
【8月更文挑战第24天】
1176 0
|
Ubuntu Python
No module named ‘_lzma’
No module named ‘_lzma’
4531 0
|
编解码 Linux 对象存储
Linux系统中内核音频驱动实现
Linux系统中内核音频驱动实现
2709 2