无法在启用 Bitcode 的情况下构建 Webrtc
Posted
技术标签:
【中文标题】无法在启用 Bitcode 的情况下构建 Webrtc【英文标题】:Can't build Webrtc with Bitcode enabled 【发布时间】:2021-09-30 13:19:37 【问题描述】:我正在尝试在启用 Bitcode 的情况下重建 WebRTC ios 框架,但它不工作它给了我错误。错误信息是
clang++:错误:未知参数:'-ffile-compilation-dir=.'
clang++:错误:-fembed-bitcode 不支持 -gdwarf-aranges
如果我在没有位码的情况下构建它,则只有启用 true 才能正常工作。谁能知道我为什么会遇到这个问题? 我的 Xcode 版本是 12.5.1
【问题讨论】:
同样的问题。我运气不好 @Jihan 遇到同样的问题,你找到解决方法了吗? 【参考方案1】:该错误是由于 Xcode 中的旧版本 clang 导致的。我使用给定的参数执行了脚本:
build_ios_libs.py --extra-gn-args 'use_xcode_clang=false enable_dsyms=true' --bitcode --arch device:arm64 simulator:x64
在 webRTC dist 中,有一个新版本的 LLVM (clang) 包,它将构建正确的框架!
【讨论】:
arm64 模拟器失败。 M1 上的 MacBook 需要它。没有解决这个错误 通过使用这个参数,为模拟器和设备成功创建了框架,但是当我尝试添加启用位码的演示项目时,位码会抛出错误。 @MrugeshTank 如果你使用 firebase crashlitics。您可以手动关闭位码并上传 dSYMs 文件。它对我有用firebase.google.com/docs/crashlytics/… webRTC 框架使用 llvm14,而 xcode 只使用 llvm12。它们彼此不兼容,因此没有构建框架。即使是新版本的 xCode 13 beta 5 也不支持构建 webRTC 框架,因为使用的是 llvm 13 :( 那么,没有构建支持位码的框架的选项吗?【参考方案2】:我用llvm12在arm64 linux上搭建webrtc,遇到同样的错误
起初clang++: error: unknown argument: '-ffile-compilation-dir=.'
。
在src/build/config/compiler/BUILD.gn
中,有一些设置如下:
if (is_nacl)
# TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
cflags += [
"-Xclang",
"-ffile-compilation-dir",
"-Xclang",
".",
]
else
# -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
# and -fcoverage-compilation-dir=.
cflags += [ "-ffile-compilation-dir=." ]
我将所有-ffile-compilation-dir
替换为fdebug-compilation-dir
然后它工作正常!
【讨论】:
这个对我有用。我想知道 WebRTC 团队是否会修复它【参考方案3】:看起来这个问题已经在树顶铬中得到解决。根据此拉取请求,use_xcode_clang
将被删除,因为树顶 clang 支持 -fembed-bitcode
:https://github.com/chromium/chromium/commit/6edcf847d80f13740e1a26a86d3b95a0bb9fbcad
【讨论】:
以上是关于无法在启用 Bitcode 的情况下构建 Webrtc的主要内容,如果未能解决你的问题,请参考以下文章
ipatool无法使用bitcode构建(xcode 7.1.1)
Flutter build ios bitcode问题,如何修复bitcode错误