1. webrtc编译参考:Windows平台WebRTC编译(持续更新) - 剑痴乎

2. webrtc 版本对应关系:WebRTC 的版本号与代码分支 - 简书

3. webrtc 源码:https://webrtc.googlesource.com/src.git

4. 由于工作需要,拉了最新webrtc最新版本的代码,vs2022编译一次搞定,没有异常。这很幸运是吧。但坑的就是peerconnection在windows上跑着有问题,查了一下是client和server交互有问题。新版本中将Win32SocketServer换掉了,然后就留下一个坑。查了一下资料,这个坑埋很久了,至今没有解决。相关讨论在这个位置:13498 - webrtc - Web-based real-time communication - Monorail,可能需要外网访问。

然后我就把源码reset到这个提交之前去编译了,使用的是vs2017的编译器,然后吧,又是很大一个坑,这次问题出在了编译上。这次出现了几个编译错误。

  • 错误1打印如下:

In file included from ../../third_party/ffmpeg/libavutil/autorename_libavutil_cpu.c:2:
../../third_party/ffmpeg/libavutil/cpu.c(50,31): error: macro 'ATOMIC_VAR_INIT' has been marked as deprecated
      [-Werror,-Wdeprecated-pragma]
static atomic_int cpu_flags = ATOMIC_VAR_INIT(-1);
                              ^
..\..\third_party\llvm-build\Release+Asserts\lib\clang\15.0.0\include\stdatomic.h(50,41): note: macro marked
      'deprecated' here
#pragma clang deprecated(ATOMIC_VAR_INIT)
                                        ^
1 error generated.

最快的解决办法就是stdatomic.h这里面的#pragma clang deprecated(ATOMIC_VAR_INIT)注释掉。

  • 错误2打印如下:

[802/1423] CC obj/third_party/zlib/zlib/deflate.obj
FAILED: obj/third_party/zlib/zlib/deflate.obj
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo /showIncludes:user "-imsvcC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include" "-imsvcC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include" "-imsvcC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-imsvcC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" "-imsvcC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" "-imsvcC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" "-imsvcC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" "-imsvcC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" -DUSE_AURA=1 "-DCR_CLANG_REVISION=\"llvmorg-13-init-12881-g4017d033-1\"" -D_LIBCPP_ABI_UNSTABLE -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_NODISCARD -D_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS -D_LIBCPP_DEBUG=0 -D_LIBCPP_NO_AUTO_LINK -D__STD_C -D_CRT_RAND_S -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_DEPRECATE -D_ATL_NO_OPENGL -D_WINDOWS -DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS -DPSAPI_VERSION=2 -DWIN32 -D_SECURE_ATL -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -DWIN32_LEAN_AND_MEAN -DNOMINMAX -D_UNICODE -DUNICODE -DNTDDI_VERSION=NTDDI_WIN10_VB -D_WIN32_WINNT=0x0A00 -DWINVER=0x0A00 -D_DEBUG -DDYNAMIC_ANNOTATIONS_ENABLED=1 -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -DZLIB_IMPLEMENTATION -DZLIB_DEBUG -DADLER32_SIMD_SSSE3 -DX86_WINDOWS -DINFLATE_CHUNK_SIMD_SSE2 -DINFLATE_CHUNK_READ_64LE -DCRC32_SIMD_SSE42_PCLMUL -DDEFLATE_FILL_WINDOW_SSE2 -I../.. -Igen -I../../third_party/zlib -fno-delete-null-pointer-checks -fno-ident -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -fcomplete-member-pointers /Gy /FS /bigobj /utf-8 /Zc:twoPhase /Zc:sizedDealloc- /D__WRL_ENABLE_FUNCTION_STATICS__ -fmsc-version=1916 -m64 -msse3 /Brepro -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -Xclang -fdebug-compilation-dir -Xclang . -no-canonical-prefixes /Od /Ob0 /GF /Z7 -gcodeview-ghash -ftrivial-auto-var-init=pattern /guard:cf,nochecks /MTd -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang checked-ptr-as-trivial-member -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare /W3 /wd4800 /wd4267 /wd4996 -Wno-unused-variable -Wno-misleading-indentation /WX /wd4091 /wd4127 /wd4251 /wd4275 /wd4312 /wd4324 /wd4351 /wd4355 /wd4503 /wd4589 /wd4611 /wd4100 /wd4121 /wd4244 /wd4505 /wd4510 /wd4512 /wd4610 /wd4838 /wd4995 /wd4996 /wd4456 /wd4457 /wd4458 /wd4459 /wd4200 /wd4201 /wd4204 /wd4221 /wd4245 /wd4267 /wd4305 /wd4389 /wd4702 /wd4701 /wd4703 /wd4661 /wd4706 /wd4715 -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-unneeded-internal-declaration -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-psabi -Wno-ignored-pragma-optimize -Wno-implicit-int-float-conversion -Wno-final-dtor-non-final-class -Wno-builtin-assume-aligned-alignment -Wno-deprecated-copy -Wno-non-c-typedef-for-linkage -Wno-unused-but-set-parameter -Wno-unused-but-set-variable -Wmax-tokens -Wno-incompatible-pointer-types /TC -Wno-implicit-fallthrough /c ../../third_party/zlib/deflate.c /Foobj/third_party/zlib/zlib/deflate.obj /Fd"obj/third_party/zlib/zlib_c.pdb"
../../third_party/zlib/deflate.c(189,12): error: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Werror,-Wdeprecated-non-prototype]
local void slide_hash(s)

这次错误有点多,不能简单粗暴修改源码了。看错误提示,编译器版本和源码兼容问题,因为新版本编译没有问题,我比较了一下最新版源码中BUILD.gn的修改,发现cflags中多了-Wdeprecated-non-prototype,嗯,和错误提示中的一样。git blame后将相关提交cherry-pick过来后问题解决。这里有个问题,这个编译问题应该是21年6月就已经有了,然后我看到的提交是22年的。。。

5. 至此,填坑完毕。开始不想填坑,试了好几个分支,最后发现满满的坑,还是自己填了吧。。。云服务器1M的带宽,同步的好慢啊。。。

webrtc 踩坑实录相关推荐

  1. JAVA发布栅格图层_基于 WebGL实现自定义栅格图层踩坑实录

    以下内容转载自totoro的文章<WebGL-Y轴翻转踩坑实录> 作者:totoro 链接:blog.totoroxiao.com/webgl-flipY- 来源:blog.totorox ...

  2. Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇)

    Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇) 折腾了两三天总算顺利在电脑上完成了装x的双系统安装,一路走来还比较顺利,主要在ubuntu的显卡设置上躺了 ...

  3. PAT乙级题库踩坑实录

    PAT乙级题库踩坑实录 [截止2021.7.28乙级题库已经全部AC] 题目名称: 1030 完美数列 (25 分) 测试点3踩坑 每次取m后,不用从m后第一个元素开始判断是否大于mp,直接从m后第m ...

  4. iOS 入门开发踩坑实录

    其实人生也没有什么道理可讲,但是我们不必丧气,还是要期待,人生有奇遇. 前言 苹果开发者:iOS Developer 最近因为工作需要要开始搞iOS了,简单记录下我收集和学习的过程. 学习资料准备 组 ...

  5. qt5.15.2-银河麒麟-龙芯国产化-项目打包踩坑实录

    qt5.15.2-银河麒麟-龙芯国产化-项目打包踩坑实录 linuxdeployqt几乎是唯一解决方案,网上各种自己写脚本根据ldd去拷贝的,最后大概率都是segment default-除非你是纯Q ...

  6. HP Zbook 15重装ubantu18后,安装Nvidia驱动(踩坑实录,不推荐尝试)

    电脑型号:HP Zbook 15  G6 显卡:nvidia Quadro T1000 安装方式: 使用官方的NVIDIA驱动进行手动安装(经过安装方式和结果对比,强烈不推荐手动安装的方式,这就是一篇 ...

  7. MMDetectionV2 + Colab 超详细教程及踩坑实录

    文章目录 前言 一.环境配置 二.准备自己的数据集 Aug.14更新 三:修改config文件 3.1 文件结构 3.2 (本地)修改config文件 3.2.1 (本地)构造自己模型的权重文件 3. ...

  8. RIME(小狼毫)踩坑实录(常见问题)

    目录 RIME(小狼毫)踩坑实录 适合谁使用 配置文件规则 文件目录 命名格式 yaml语法 踩坑 配置微软双拼 增加词典 GUI方式(不推荐) 编写yaml文件方式 符号上屏 总结 RIME(小狼毫 ...

  9. Chromium内核浏览器编译记(一)踩坑实录

    转载请注明出处:https://blog.csdn.net/kong_gu_you_lan/article/details/123862868 本文出自 容华谢后的博客 往期回顾: Chromium内 ...

最新文章

  1. 【深度学习】(5) 简单网络,案例:服装图片分类,附python完整代码
  2. PyTorch LSTM,batch_first=True对初始化h0和c0的影响
  3. WebWork深度探索之号外
  4. php对json随机排序,按月对PHP JSON数组进行排序
  5. go 执行sh失败_为容器化的 Go 程序搭建 CI
  6. Hadoop入门(二)集群安装
  7. php实时股票,php基于curl实现的股票信息查询类实例
  8. linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解
  9. 项目一计算机基础知识考核题,2013计算机基础知识试题及答案
  10. libusb的交叉编译
  11. malloc/free与new/delete的使用要点
  12. 解决从登录页通过this.$router.push跳转首页后 点返回健路由变而页面不变的问题
  13. 验证日期的正则表达式比较全面地验证
  14. 追溯微软亚洲研究院发展历史:在中国商业公司如何做研究院
  15. DirectAdmin将PHP5.3降级为PHP5.2
  16. java argument type mismatch_解决mybatisplus插入报错argument type mismatch的问题
  17. PyTorch实现断点继续训练
  18. 一个整数称为完全平方数,是指它的值是另一个整数的平方。如81是个完全平方数,因为它是9的平方。请按要求完成:①在三位的正整数中寻找所有完全平方数;例如:144(12*12),676(26*26)
  19. 支付宝、财付通、快钱 三种功能特点的不同
  20. 工具教程第九讲:以太坊区块浏览器使用

热门文章

  1. Java HashMap遍历实践
  2. 计蒜客:蒜头君吃桃(java)
  3. Tomcat工作原理 、JVM内存溢出及合理配置、配置文件详解
  4. 鸿蒙方将腐皮雀跃而有,古人有一万种方法表达心情,而你只会卧槽
  5. 论文写作要点总结(持续更新)
  6. nyoj754 黑心医生 结构体优先队列
  7. 发现一个不错的十六进制编辑器-HxD
  8. 对称锥规划:锥与对称锥
  9. 计算机毕业设计Java飞机订票管理系统(源码+系统+mysql数据库+lW文档)
  10. LeetCode刻意练习22--二叉树的中序遍历