android 编译总结

来源:互联网 发布:南京大学软件学院 校区 编辑:程序博客网 时间:2024/06/05 19:59

编译android的工程中,遇到了很多问题,在此总结一下,利于大家的查找:

 

一:需要一些需要预装的软件。

sudo apt-get install build-essential

sudo apt-get install make

sudo apt-get install gcc

sudo apt-get install g++

sudo apt-get install libc6-dev

 

sudo apt-get install patch

sudo apt-get install texinfo

sudo apt-get install libncurses-dev

 

sudo apt-get install git-core gnupg

sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl

sudo apt-get install ncurses-dev 

sudo apt-get install zlib1g-dev

sudo apt-get install valgrind

 

二:在32位上编译gingerbread时,需要修改一些代码。

 

下载了android 2.3源码,但是当编译的时候,遇到了如下问题:

build/core/main.mk:77: You are attempting to build on a 32-bit system.
build/core/main.mk:78: Only 64-bit build environments are supported beyond froyo/2.2.

原因是编译gingerbread默认需要64位系统和Java6,在32位系统上修改下列文件能解决这个问题:

1. build/core/main.mk,查找下面部分

++++++++++++++++++++++++++++++++++++++++++

ifeq ($(BUILD_OS),linux)
build_arch := $(shell uname -m)
ifneq (64 ,$(findstring 64 ,$(build_arch)))
$(warning ************************************************************)
$(warning You are attempting to build on a 32-bit system.)
$(warning Only 64-bit build environments are supported beyond froyo/2.2.)
$(warning ************************************************************)
$(error stop)
endif
endif
+++++++++++++++++++++++++++++++++++

将64修改成 i686,注意 i必须是小写 。

2.依次修改下列文件

external/clearsilver/cgi/Android.mk
external/clearsilver/java-jni/Android.mk
external/clearsilver/util/Android.mk
external/clearsilver/cs/Android.mk

在上述文件中查找如下变量,将m64修改成m32

LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64

你也能在vim中快速替换:

:%s/m64/m32/g

 

 

三:编译过程中可能会遇到的问题。

 

1:编译遇到input error等问题,重新编译一下就可以了,或者把出问题的.so删除再编译,遇到的很多问题都是这样解决的。

 

2:fatal error: GL/glu.h: No such file or directory

      sudo apt-get install libglu-dev

 

3:In file included from external/qemu/target-i386/kvm.c:19:

In file included from external/qemu/target-i386/kvm.c:19:
/usr/include/linux/kvm.h:215: error: field 'arch' has incomplete type
/usr/include/linux/kvm.h:383: error: field 'arch' has incomplete type
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/emulator-target-i386_intermediates/target-i386/kvm.o] 错误 1

google的解决方案:https://review.source.android.com/#change,22776

看来这个问题是只有在用 Ubuntu 11.04 版本编译的时候才会出现的问题,
幸好有好心人做了个补丁解决了这个问题.
只要在下载源码的目录下执行下面这句,然后再make就不会再出现这个错误了:

repo download platform/external/qemu 22776/1

原创粉丝点击