编译libbaresip-android时webrtc找不到absl/meta/type_traits.h怎么办
问题原因
你遇到的报错是因为编译依赖缺失:absl/meta/type_traits.h属于谷歌开源的Abseil C++基础库,是libwebrtc的强制依赖项,你当前拉取的libwebrtc源码没有包含这个依赖库,所以编译时找不到头文件。
解决方法
按优先级从高到低选择即可:
- 拉取完整子模块(优先推荐)
你大概率是拉取项目代码时没有同步拉取关联的子模块,进入libbaresip-android项目的根目录,执行以下命令同步所有依赖子模块:
git submodule update --init --recursive
执行完成后重新走README中的编译步骤即可,子模块同步会自动拉取带正确版本absl依赖的libwebrtc源码。
- 手动补全Abseil依赖
如果子模块拉取失败,可以手动补全依赖:
- 下载Abseil库的稳定发行版,将解压后根目录下的
absl文件夹,整体放到libwebrtc/jni/src/路径下,和同目录的webrtc文件夹平级 - 编辑libwebrtc目录下的Android.mk文件,在
LOCAL_C_INCLUDES配置段中新增一行:$(LOCAL_PATH)/../src,让编译器能识别到absl的头文件路径,保存后重新编译即可。
- 禁用webrtc模块(可选,适合不需要webrtc功能的场景)
如果你不需要webrtc提供的音频3A处理(回声消除、噪声抑制、增益控制)能力,可以直接修改libbaresip-android的Makefile,关闭WEBRTC相关的编译开关,跳过webrtc的编译步骤,即可直接完成baresip库的编译。
注意事项
请保持使用当前的NDK 21版本编译,不要升级到更高版本的NDK,项目代码对更高版本NDK存在兼容问题,会引发其他编译错误。
内容的提问来源于stack exchange,提问作者rolandl
相关产品推荐
相关产品推荐

