转载自:http://kuling729.lofter.com/post/ba0ab_255b81
环境:ubuntu 12.04
开发板:devkit8500
android版本:2.2
linux版本:2.6.32
jdk版本:1.5(必须是这版本)
建议编译前先把以下错误先修正
1.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
解决方法:gedit frameworks/base/libs/utils/Android.mk
修改以下语句
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
为
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive
2.g++: error: –fpermissive: No such file or directory
因为–fpermissive 前边的-是带输入法的,改为不带输入法的 短线就可以了
3./usr/bin/ld: cannot find libstdc++.so
sudo ln -sf /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.so
4./usr/bin/ld: cannot find -lz
缺少lib32z1-dev,安装即可:sudo apt-get install lib32z1-dev
5.javah:commond not foundcd /usr/bin
sudo ln -s -f /usr/jdk1.5.0_22/bin/javah
6.aapt_intermediates/aapt] Error 1
在/frameworks/base/tools/aapt目录打开文件Android.mk,编辑下面一行:
LOCAL_LDLIBS := -lz
ifeq ($(HOST_OS),linux)
#LOCAL_LDLIBS += -lrt 把这行注释掉,改为下面一行。
LOCAL_LDLIBS += -lrt -lpthread
endif
7./bin/bash: flex: command not found
sudo apt-get install flex
8.javadoc: command not found
cd /usr/bin
sudo ln -s -f /usr/jdk1.5.0_22/bin/javadoc
9.X11/Xlib.h: No such file or directory
sudo apt-get install libx11-dev
10.
host Executable: localize (out/host/linux-x86/obj/EXECUTABLES/localize_intermediates/localize)
out/host/linux-x86/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a(threads.o): In function `thread_store_get':
/home/leo/Devkit8500/linux/demo/Android/source/rowboat-android-froyo-devkit8500/system/core/libcutils/threads.c:27: undefined reference to `pthread_getspecific'
out/host/linux-x86/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a(threads.o): In function `thread_store_set':
/home/leo/Devkit8500/linux/demo/Android/source/rowboat-android-froyo-devkit8500/system/core/libcutils/threads.c:36: undefined reference to `pthread_key_create'
/home/leo/Devkit8500/linux/demo/Android/source/rowboat-android-froyo-devkit8500/system/core/libcutils/threads.c:44: undefined reference to `pthread_setspecific'
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/localize_intermediates/localize] Error 1
在/frameworks/base/tools/localize目录打开文件Android.mk,编辑下面一行:
LOCAL_LDLIBS := -lz
ifeq ($(HOST_OS),linux)
#LOCAL_LDLIBS += -lrt 把这行注释掉,改为下面一行。
LOCAL_LDLIBS += -lrt -lpthread
endif
11.sh: 1: gperf: not found
sudo apt-get install gperf
12.pushd : not found
ubuntu默认shell为dash,要将build_ubi.sh脚本的开头改为#!/bin/bash
13.要先将~/Devkit8500/linux/demo/Android/source/rowboat-android-froyo-devkit8500/OMAP35x_Android_Graphics_SDK_3_01_00_03里的Rules.make的HOME改为本机对应的目录
################# FIELDS MODIFIABLE BY THE USER ###############################
#set home area HOME (relative location for all SDK operations)
HOME=/home/leo/Devkit8500/linux/demo/Android/source/rowboat-android-froyo-devkit8500
浙公网安备 33010602011771号