编译Android源码时常见问题以及解决方法

下载Android源码之后,这里以Android 2.3(gingerbread)为例,编译时可能会遇到的一些问题,下面来总结下这些常见的问题以及解决方法。


1.make: *** No rule to make target `run-java-tool', needed by `out/target/common/docs/doc-comment-check-timestamp'.  Stop.

这是由于没有设置$ANDROID_JAVA_HOME 造成的,只要设置下ANDROID_JAVA_HOME即可。

解决办法:

执行

export ANDROID_JAVA_HOME=$JAVA_HOME 


2.build/core/main.mk:73: You are attempting to build on a 32-bit system.

   build/core/main.mk:74: Only 64-bit build environments are supported beyond froyo/2.2.

这是因为Android2.2(froyo)之后默认只支持64-bit。

解决办法:

./external/clearsilver/cgi/Android.mk

./external/clearsilver/java-jni/Android.mk

./external/clearsilver/util/Android.mk

./external/clearsilver/cs/Android.mk

这四个文件中的

LOCAL_CFLAGS += -m64

LOCAL_LDFLAGS += -m64

注释掉,或者将“64”换成“32”

LOCAL_CFLAGS += -m32

LOCAL_LDFLAGS += -m32

然后,

./build/core/main.mk 中的

ifneq (64,$(findstring 64,$(build_arch)))

改为:

ifneq (i686,$(findstring i686,$(build_arch)))

即可。


3.make: *** [out/target/product/generic/obj/lib/crtbegin_dynamic.o] Error 1

这是在32位Linux上编译引起的arm-eabi-4.4.3版本问题,所以需要修改,这里我们使用arm-eabi-4.4.0版本编译器,建立一个软链接。

解决办法:

在./prebuilt/linux-x86/toolchain中执行

$ mv arm-eabi-4.4.3 arm-eabi-4.4.3.old

$ ln -s arm-eabi-4.4.0 arm-eabi-4.4.3

即可。


4.make: *** [out/target/product/generic/obj/EXECUTABLES/BufferQueue_test_intermediates/LINKED/BufferQueue_test] Error 1

解决办法:

把system/media/opensles/libopensles目录下的IAndroidEffect.c改为IAndroidEffect.cpp,并且把Android.mk中的内容“IAndroidEffect.c”也一并修改为”IAndroidEffect.cpp“。


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值