您的位置:首页 > 移动开发 > Android开发

android2.3源码编译小结

2013-01-09 18:31 381 查看
按照老罗一篇博客的指点我完成了我的android源码的编译,而且将编译好的镜像文件良好的运行在模拟器上。感谢老罗的博客,下面是这篇博客的链接

/article/1363578.html

在编译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 相反。

语法格式如下:

ifneq (arg1, arg2)

ifneq 'arg1' 'arg2'

ifneq "arg1" "arg2"

ifneq 'arg1' "arg2"

ifneq "arg1" 'arg2'

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: