情况是这样的,某人最近入手一台nexus7,于是在cyanogenmod 将nexus7的原代码下载到本地,编译环境是UBUNTU 12,04

然后编译的时候,出现了如下的错误导致编译失败

target arm C++: libwebrtc_system_wrappers <= external/webrtc/src/system_wrappers/source/map.cc
In file included from external/webrtc/src/system_wrappers/source/map.cc:11:0:external/webrtc/src/system_wrappers/source/../interface/map_wrapper.h:14:15: fatal error: map: No such file or directory compilation terminated.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebrtc_system_wrappers_intermediates/map.o] Error 1
make: *** Waiting for unfinished jobs....

仔细一看,原来是webrtc编译出错,原因大概是因为编译的时候找不到c++的STL库而失败。

而我的编译环境里面是有STL 的,经过一番google之后,发现问题的原因是webrt编译脚本里面的一个bug,webrtc会检查是否你在环境变量里面定义过NDK_ROOT这个变量,如果定义了的话webrtc会找不到STL的头文件。。。。真是很诡异的bug

解决方法就是在环境变量里面,export NDK_ROOT = “” 然后重新编译

参考资料 http://stackoverflow.com/questions/11978919/android-building-fatal-error-map-no-such-file