按照老罗一篇博客的指点我完成了我的android源码的编译,而且将编译好的镜像文件良好的运行在模拟器上。感谢老罗的博客,下面是这篇博客的链接
http://blog.csdn.net/luoshengyang/article/details/6559955
在编译android2.3源码的过程中我遇到了几个问题,除了老罗博客里写的那些。先说一下我的编译环境是Ubuntu10.04装在VirtualBox-3.2.12虚拟机下。
我遇到一个困扰了我一段时间的问题,按照老罗的博客我修改了
#ifneq (64,$(findstring 64,$(build_arch)))
ifneq (i686,$(findstring i686,$(build_arch)))
因为不是64位的操作系统,但我在这出现了问题,在make过程中出现一个错误,main.mk 152 **不应该出现endif。经过搜索和对比原因是我没有在ifneq后面加空格,虽然系统识别出关键字ifneq但运行出错了,所以多出来个endif,所以出现这个错误。还是基础不行啊。
下面是在makefile文件下ifeq的用法
ifneq 条件表达式
ifneq 用来判断参数是否不相等,功能与 ifeq 相反。
语法格式如下:
1 ifeq 表示条件语句的开始,并指定了一个比较条件(相等)。
2 ifeq 和参数之间用若干空白(空格、Tab 字符等)分开。
3 arg1 和 arg2 使用圆括号包围、并使用逗号分隔(如果是用单引号或双引号的形式,则参数之间不需要逗号,这个是容易忽视的错误)。逗号前后可以使用若干空白(空格、Tab 字符等)。
4 make 替换并展开 arg1 和 arg2 后,对它们的值进行比较。如果相同则将 text-if-true 作为 make 要执行的一部分,否则将 text-if-false 作为 make 要执行的一部分。
5 通常我们 ifeq 或者 ifneq 来判断一个变量的值是否为空(不包含任何字符)。
第二个问题就是找不到OpenSLESUT.h,具体解决办法是# cp /home/Android-2.3/system/media/opensles/libopensles/OpenSLESUT.h /home/Android-2.3/system/media/opensles/include/SLES/OpenSLESUT.h
向老罗继续学习,go。