进入源码的根目录,输入命令 make
在编译过程中,遇到了很多问题,下面为一些具体错误,以及对应的解决方法
实际错误出现的顺序和下面的顺序基本一致
1、/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 没有那个文件或目录
/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 没有那个文件或目录
解决方法:
sudo apt-get install lsb-core
2、/bin/bash: bison: command not found
解决方法:
sudo apt-get install bison
3、/usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory
解决方法:
sudo apt-get install lib32ncurses5-dev
sudo apt-get install libc6-dev-i386
4、/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.3/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status
make: * [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] Error 1
解决方法:
sudo apt-get install g++-multilib
5、external/clearsilver/cgi/cgi.c:22:18: fatal error: zlib.h: No such file or directory
compilation terminated.
make: * [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_cgi_intermediates/cgi.o] Error 1
解决方法:
sudo apt-get install zlib1g-dev
6、frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers [-fpermissive]
make: * [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] Error 1
解决方法:
编辑frameworks/base/libs/utils/Android.mk文件,
修改LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
为
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive
注意 fpermissive 前面为短线
7、/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: * [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1
解决方法:
sudo apt-get install lib32z1-dev
8、Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
/bin/bash: flex: command not found
make: * [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127
解决方法:
sudo apt-get install flex
9、/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: * [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1
解决方法:
sudo apt-get install lib32ncurses5-dev
10、prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55: fatal error: X11/Xlib.h: No such file or directory
compilation terminated.
make: * [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/Android/main-common.o] Error 1
解决方法:
sudo apt-get install libx11-dev
11、sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 96.
make: * [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h] Error 25
make:* Deleting file`out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h’
解决方法:
sudo apt-get install gperf
12、host C++: obbtool <= frameworks/base/tools/obbtool/Main.cpp
:0:0: error: “_FORTIFY_SOURCE” redefined [-Werror]
:0:0: note: this is the location of the previous definition
cc1plus: all warnings being treated as errors
make: * [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error
解决方法:
编辑build/core/combo/HOST_linux-x86.mk文件,
修改HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
为
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
处理完错误,就可以去做别的事情了,最后编译成功,如图: