webrtc 编译

注:webrtc 源码编译需要自备梯子.

获取源码

安装 depot_tools

depot_tools是个工具包,里面包含gclient、gcl、gn和ninja等工具。其中gclient是代码获取工具,它其实是利用了svn和Git.

//todo install
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
修改 ~/.zshrc
export PATH=$PATH:~/work/depot_tools/depot_tools

获取源码

创建源码目录 webrtc, fetch 执行之后将在 webrtc 目录中创建 src 目录, 而 src/webrtc 才是真正源码所在. 源码目录估计在 8G 左右大小.


mkdir webrtc && cd webrtc
linux : fetch --nohooks webrtc
android: fetch --nohooks webrtc_android
ios: fetch --nohooks webrtc_ios
gclient sync

切换分支代码

由于 master 分支更新度频繁, 不利于自身 patch 维护, 需要切换到指定版本分支.

cd src
gclient sync --with_branch_heads
git fetch
git checkout -b local_branch branch_heads/$branch
gclient sync

编译

区分为 linux 平台, android 平台, ios 平台.

linux

在 ubuntu 16.04 实现编译, 需要注意 webrtc 内部脚本仅支持 lts 发布版, 所以 Ubuntu15.04 这个估计有点麻烦了, 本文不讨论此情况.

gn gen out/Default
ninja -C out/Default

android

android 版本只支持在 linux 编译, 无法在 mac 环境中编译.

编译环境 jdk8 安装:

具体安装就不说了, 关键是环境变量设置, 楼主踩过这个坑, 环境变量未设置正确, 致各种 jni 相关的错误.


export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export GYP_DEFINES="OS=android"
export PATH=$PATH:${JAVA_HOME}/bin

android 编译

针对 armv7, armv8, x86, x64 都需要重新编译下


gn gen out/Default --args='target_os="android" target_cpu="arm64"'
ninja -C out/Default

ios

// todo install

切换到分支:

git checkout -b local_branch branch_heads/$branch

gclient sync

./tools_webrtc/ios/build_ios_libs.sh

出现报错:

../../third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_input.c:1734:15: error: taking address of packed member 'time_entered' of class or structure 'sctp_state_cookie' may result in an unaligned pointer value [-Werror,-Waddress-of-packed-member]
                                                              &cookie->time_entered,
                                                               ^~~~~~~~~~~~~~~~~~~~
../../third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_input.c:2486:10: error: taking address of packed member 'time_entered' of class or structure 'sctp_state_cookie' may result in an unaligned pointer value [-Werror,-Waddress-of-packed-member]

需要打个补丁,Pacth [https://codereview.chromium.org/2833833002]

cd build

patch -p2 -i /path/to/downloaded/issue2833833002_1.diff

此外需要根据不同 xcode 版本 如 8.3.3 则增加 xcode_version == "0833" 到 build/config/compiler/BUILD.gn 文件中( 搜索 xcode_version, 增加 || 条件 )

执行 ./tools_webrtc/ios/build_ios_libs.sh

提取 src/out_ios_libs/WebRTC.framework

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容

  • Android 编译安装 安装depot_toolsgit clone https://chromium.goog...
    guowei阅读 568评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,789评论 25 707
  • 如果工程项目换了几波人接手开发,那么就有可能出现一种现象:某个控制器是用classA模型的数据显示的,如果其他人想...
    Fsn_soul阅读 615评论 0 0
  • 相关文章 海量数据处理之经典实例分析top k 问题中各种场景分析的很好: 单机+单核+足够大内存单机+多核+足够...
    WendySays阅读 292评论 0 0
  • 170413 随手学画,我不是海绵宝宝,你也不是螃蟹哥,我们都是为生活,普通人而已。 ...
    魍魍亼阅读 298评论 0 0