Android学习笔记2--编译源代码

本文记录了在Mac OS 10.7.5和Xcode 4.4.1上编译Android 4.0.1_r1源代码时遇到的问题及解决方法,包括需要MacOSX10.5 SDK、Perl版本不一致、KeyedVector.h错误、'strnlen'重定义和链接错误等。提供了相关链接和修改编译脚本的详细步骤。
摘要由CSDN通过智能技术生成

Google官方建议在Mac OS上编译Master下的代码所需环境为MacOS 10.8 (Mountain Lion) + Xcode 4.5.2;编译4.2.x分支下的代码需MacOS 10.6 (Snow Leopard)或MacOS 10.7 (Lion), 以及Xcode 4.2;编译4.0.x及以前的代码需MacOS 10.5 (Leopard)或MacOS 10.6 (Snow Leopard),并且需要MacOS 10.5 SDK。而我这边的环境为Mac OSX 10.7.5,Xcode 4.4.1,待编译的Android版本为4.0.1_r1。由于不是官方推荐的环境,所以在编译过程中遇到很多问题,这里一一记录下。

1. Need the MacOSX10.5 sdk. 问题,解决方法有两种:

a). 修改编译脚本“external/qemu/Makefile.android”,找到如下内容:

ifneq ($(filter 10.1 10.2 10.3 10.1.% 10.2.% 10.3.% 10.4 10.4.%,$(DARWIN_VERSION)),)
  $(error Building the Android emulator requires OS X 10.5 or above)
endif
ifeq ($(filter 10.5 10.5.%,$(DARWIN_VERSION)),)
  # We are on Snow Leopard or above
  #LEOPARD_SDK := /Developer/SDKs/MacOSX10.5.sdk
  #LEOPARD_SDK := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk
  ifeq ($(strip $(wildcard $(LEOPARD_SDK))),)
    $(info Please install the 10.5 SDK on this machine at $(LEOPARD_SDK))
    $(error Aborting the build.)
  endif
  MY_CFLAGS += -isysroot $(LEOPARD_SDK) -mmacosx-version-min=10.5 -DMACOSX_DEPLOYMENT_TARGET=10.5
  MY_LDLIBS += -isysroot $(LEOPARD_SDK) -Wl,-syslibroot,$(LEOPARD_SDK) -mmacosx-version-min=10.5
endif

蓝色语句为原始代码,红色为需要修改的地方。可以看到,脚本中指定了10.5 SDK的位置,只要将该位置换成10.7 SDK的位置,并且把条件判断的版本修改为10.7就可以继续编译了。但是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值