上·志

上下求索,志在千里。

导航

[转载]编译android过程的Q&A

Posted on 2012-10-23 14:37  Shangzhi  阅读(251)  评论(0)    收藏  举报
[转载]编译android过程的Q&A

 转载自: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