这是我编译android源代码的时候遇到的问题,特来分享一下,希望对大家有帮助,我的系统是ubuntu11.10,下载地址是:http://down.tech.sina.com.cn/page/28382.html,android版本是android-2.1_r2,下载地址是:http://d.zhu.im/Android/,这个网址有时候打开会慢,要耐心等待,进去后用迅雷下载android版本就行了。
出错及解决如下:
1. /bin/bash: bison: command not found
解决:a@ubuntu:~/work/android-2.1_r2$ sudo apt-get install bison
2.ubuntu下怎样安装vim编辑器
默认就有vim的,你开个终端输入vim回车。
如果没有,终端输入 sudo apt-get install vim
3.Your version is: java version "1.6.0_26".
The correct version is: 1.5.
解决办法:先卸载java6,再安装java5.
卸载java6
卸载sun-java6-jdk
$ sudo apt-get remove sun-java6-jdk
$ sudo apt-get remove sun-java6-bin
安装java5
sudo gedit /etc/apt/sources.list
加入如下源。
deb http://cz.archive.Ubuntu.com/ubuntu hardy-updates main multiverse
并执行:sudo apt-get update 更新源后再执行上述指命令既可成功下载。
再执行sudo apt-get install sun-java5-jdk
Java -version查看版本
4./bin/bash: g++: 未找到命令
/bin/bash: g++: command not found
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_intermediates/pseudolocalize.o] Error 127
解决:a@ubuntu:~/work/android-2.1_r2$ sudo apt-get install build-essential
5.external/clearsilver/cgi/cgi.c:22:18: 致命错误: zlib.h:没有那个文件或目录
编译中断。
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_cgi_intermediates/cgi.o] 错误1
解决:a@ubuntu:~/work/android-2.1_r2$ sudo apt-get install zlib1g-dev
6.frameworks/base/libs/utils/RefBase.cpp:483:67错误将‘const android::RefBase::weakref_impl’作为‘void android::RefBase::weakref_impl::trackMe(bool, bool)’的‘this’实参时丢弃了类型限定 [-fpermissive]
解决方法:$ gedit frameworks/base/libs/utils/Android.mk
修改以下语句
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
为LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive
7.g++: 错误: –fpermissive:没有那个文件或目录
解决:因为–fpermissive 前边的-是带输入法的,改为不带输入法的 短线就可以了
8./home/hmepas/android/src/system/core/libcutils/threads.c:44: undefined
reference to `pthread_setspecific'
解决方法:修改./framework/base/tools/aapt/Android.mk文件
LOCAL_LDLIBS := -lz
ifeq ($(HOST_OS),linux)
-LOCAL_LDLIBS += -lrt
+LOCAL_LDLIBS += -lrt -lpthread
endif
ifeq ($(HOST_OS),windows)
9./bin/bash: flex: 未找到命令
解决:apt-get install flex
10./usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1
解决:a@ubuntu:~/work/android-2.1_r2$ sudo apt-get install libncurses-dev
11.make: *** [out/host/linux-x86/obj/EXECUTABLES/localize_intermediates/localize] 错误 1
android::RefBase::weakref_impl’as‘this’argumentof‘void
android::RefBase::weakref_impl::trackMe(bool,bool)’discardsqualifiers[-fpermissive]
make:***[out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o]错误1
解决方法:打开Android.mk
$geditframeworks/base/libs/utils/Android.mk将下面这一行
LOCAL_CFLAGS+=-DLIBUTILS_NATIVE=1$(TOOL_CFLAGS)改为
LOCAL_CFLAGS+=-DLIBUTILS_NATIVE=1$(TOOL_CFLAGS)-fpermissive
12、make:
***[out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/android/skin/window.o]Error1
解决方法:$sudoapt-getinstalllibx11-dev
13.make:***[out/host/linux-x86/obj/EXECUTABLES/localize_intermediates/localize]错误1
解决方法:打开Android.mk:
$gedit./framework/base/tools/localize/Android.mk文件(注意与问题五中的文件是不同文件)编辑下面一行:ifeq($(HOST_OS),linux)
#LOCAL_LDLIBS+=-lrt把这行注释掉,改为下面一行。
LOCAL_LDLIBS+=-lrt–lpthread
14)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'
解决:a@ubuntu:~/work/android-2.1_r2$ sudo apt-get install gperf
15. 错误提示:
host C++: acc <= system/core/libacc/tests/main.cpp
host C++: libacc <= system/core/libacc/acc.cpp
host SharedLib: libacc (out/host/linux-x86/obj/lib/libacc.so)
host Executable: acc (out/host/linux-x86/obj/EXECUTABLES/acc_intermediates/acc)
/usr/bin/ld: out/host/linux-x86/obj/EXECUTABLES/acc_intermediates/main.o: in function symbolLookup(void*, char const*):system/core/libacc/tests/main.cpp:41: error: undefined reference to 'dlsym'
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/acc_intermediates/acc] 错误 1
解决方法:修改./system/core/libacc/tests/Android.mk文件
LOCAL_SHARED_LIBRARIES :=
libacc
+LOCAL_LDLIBS := -ldl
#LOCAL_MODULE_TAGS := tests
LOCAL_SHARED_LIBRARIES :=
libacc
+LOCAL_LDLIBS := -ldl
LOCAL_CFLAGS := -O0 -g
LOCAL_SHARED_LIBRARIES :=
libacc
+LOCAL_LDLIBS := -ldl
LOCAL_MODULE_TAGS := tests
LOCAL_SHARED_LIBRARIES :=
libacc
+LOCAL_LDLIBS := -ldl
LOCAL_CFLAGS := -O0 -g
但是我按照上面的改了以后,编译还是出错,后来把+LOCAL_LDLIBS := -ldl换为
LOCAL_LDLIBS := -ldl就好了。