使用主机 libc++ 在 Linux 上构建 WebRTC

问题描述 投票:0回答:2

当尝试在 Linux 上构建 WebRTC 时,静态构建甚至共享构建中都有大量未定义的符号。其中包括 std::__Cr 命名空间中的 basic_string 内容(我猜这是 Google 的自定义 libc++?)、SSL 函数、protobuf 内容以及 dbus 等免费内容。

在 gn 参数中使用

use_custom_libcxx=false
配置它,由于可选中缺少一些 emplace 函数,它根本无法编译。

主机系统已安装并可用最新的 libc++ 和 clang 工具链,它完全了解上述功能,但是我还没有找到一种方法让 webRTC 构建了解它并使用它。

我最好想要一个 libwebrtc 的静态构建,它使用主机 libc++ 并与最终链接 libwebrtc 的其余代码(使用主机 libc++)兼容。

c++ linux c++17 webrtc libc++
2个回答
2
投票

关于使用

use_custom_libcxx=false
构建 webrtc,我遇到了与你相同的问题 (
no matching member function for call to 'emplace'
)。该问题实际上已在此 GitHub 问题中报告给 LLVM,并且其中还提到了解决方法。

要修复它,只需声明一个默认构造函数并在类外部默认它即可。就我而言,我只需要为

webrtc::LossBasedBweV2::Config
执行此操作(在
modules/congestion_controller/goog_cc/loss_based_bwe_v2.<h/cc>
中。

之后,我能够使用 libstdc++ 构建 webrtc。与 webrtc 提供的 sysroot 和主机系统一起使用。


0
投票

您能否提供更多信息,修复应该是什么样子?

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.