Ninja编译webRTC失败,build stopped: subcommand failed

编译webRTC时遇到ninja错误,通常在生成obj/audio/audio_tests/audio_send_stream_unittest.o时失败。解决方案包括删除代码库重新克隆或查看编译日志定位失败文件单独编译。20200628更新:问题根源是系统内存不足,增加内存至4G + 2 CPUs后,编译不再失败。
摘要由CSDN通过智能技术生成

webRTC的github代码的更新速度还是很快的,研究webRTC的时候,不可避免的经常git pull去拿最新的代码。更新完之后,重新编译webRTC有时候会不成功,并且始终会失败在某一个文件的编译上。

1. 编译失败

更新完webRTC代码,开始编译,出现以下错误:

build stopped: subcommand failed

这个应该是ninja编译经常出现的一个error,而且大多时候都是在编译产生obj/audio/audio_tests/audio_send_stream_unittest.o的时候就被Kill了。根本原因还是没有找到,如果哪位大佬知道,请指示。

2. 如何解决

(1)可以删掉代码库,重新clone一份,然后再编译。
这种方法可靠,但是不现实,因为非常费时间。除非真的想重新clone一份代码。

(2)打开编译log, 找到失败文件,单独产生目标文件

 ninja -C out/Default -v

可以找到编译失败在哪一个文件,然后单独编译该文件,产生对应object file.

我在Debian系统下,不断的失败在webrtc_voice_engine_unittest.o:

FAILED: obj/media/rtc_media_unittests/webrtc_voice_engine_unittest.o 
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/media/rtc_media_unittests/webrtc_voice_engine_unittest.o.d -DWEBRTC_OPUS_SUPPORT_120MS_PTIME=1 -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DCR_CLANG_REVISION=\"n346557-4e0d9925-2\" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_LIBCPP_ABI_UNSTABLE -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_ENABLE_NODISCARD -D_LIBCPP_DEBUG=0 -DCR_LIBCXX_REVISION=375504 -DCR_SYSROOT_HASH=79a7783607a69b6f439add567eb6fcb48877085c -D_DEBUG -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWEBRTC_ENABLE_PROTOBUF=1 -DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE -DRTC_ENABLE_VP9 -DHAVE_SCTP -DWEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=1 -DWEBRTC_POSIX -DWEBRTC_LINUX -DABSL_ALLOCATOR_NOTHROW=1 -DABSL_FLAGS_STRIP_NAMES=0 -DGTEST_API_= -DGTEST_HAS_POSIX_RE=0 -DGTEST_LANG_CXX11=1 -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_HAS_ABSL=1 -DHAVE_WEBRTC_VIDEO -DUNIT_TEST -I../.. -Igen -I../../third_pa
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值