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