使用ninja -C out/Release指令编译安卓Webrtc的SDK报错找不到android ndk处理方式

Posted TSINGSEE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ninja -C out/Release指令编译安卓Webrtc的SDK报错找不到android ndk处理方式相关的知识,希望对你有一定的参考价值。

之前我们也介绍过很多关于webrtc的编译,由于gn 比 GYP 快不少,因此目前我们编译WebRTC是使用 gn 来生成构建脚本,使用 ninja 来构建。

gn生成ninja命令

使用 gn 生成 ninja 构建文件的常用命令如下:

// 生成 debug 版本的构建文件,默认配置
gn gen out/Debug 

// 生成 release 版本的构建文件
gn gen out/Release --args="is_debug=false"

ninja脚本

在skia\\gyp下面的gyp脚本是模板,执行sync-and-gyp时会根据这些模板来动态生成实际的构建脚本。很多模块依赖、条件等都可以在这个目录下的gyp或gypi中找到。

使用ninja -C out/Release指令编译报错

使用ninja -C out/Release指令编译安卓所需要的webrtc sdk时,出现了以下错误:
ninja: Entering directory `android/Release’
ninja: error: ‘…/…/third_party/android_ndk/sources/android/cpufeatures/cpu-features.c’, needed by ‘obj/third_party/android_sdk/cpu_features/cpu-features.o’, missing and no known rule to make it

51.png

从这个报错我们可以得知是文件依赖关系有问题,找不到所需要的文件。这种情况有时候是因为工程所在的目录发生改变,找不到依赖,对于webrtc而言,里面所依赖的插件都会下载到webrtc中第三方库里,但是打开webrtc第三方库里面找cpu-features.c文件是找不到的,所以表明webrtc缺少android ndk第三方。

因此我们需要从安卓官网下载所需ndk(https://developer.android.google.cn/ndk/downloads/revision_history),并拷贝到webrtc目录下面的third_part/android_ndk里面。然后再次运行ninja -C out/Release指令,此错误消失。

 

以上是关于使用ninja -C out/Release指令编译安卓Webrtc的SDK报错找不到android ndk处理方式的主要内容,如果未能解决你的问题,请参考以下文章

在没有 LTO 的情况下构建 Chromium、WebRTC

TensorFlow 未编译为使用 SSE(等)指令,但这些指令可用

使用介子/忍者构建需要多次执行才能完成

导入 tensorflow 时出错,tensorflow 库被编译为使用 AVX 指令,但这些在您的机器上不可用

Linux之gstreamer视频编解码测试指令

在 macOS 上使用 Ninja 进行 CMake GUI