Ubuntu9.10下编译Android源码

 

先装jdk1.5,网上说1.6的有点小问题,所以我没装1.6,选择了1.5. 然后一边装必须的一些程序,apt-get install **** 很多乱七八糟的,网上能搜到,然后一边下载android源码。

源码的下载需要git,curl和repo,git和curl可以直接用apt-get install git-core curl就可以了

然后下载repo

curl http://android.git.kernel.org/repo >~/bin/repo

添加可执行权限

sudo chmod +x repo

初始化repo

repo init -u git://android.git.kernel.org/platform/manifest.git

如果只需要某一个版本,比如我只要cupcake

repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake

然后建个目录,

mkdir android

进入

cd android

下载

repo sync

然后就等吧,大概两个G左右的内容,在获取39%的时候和95%的时候是最慢的,因为39%的有一百多M,95%的有差不多400M。

下载完之后,先不要make,因为还有几个问题:

1.如果直接make,会出现frameworks/policies/base/PolicyConfig.mk:22: *** No module defined for the given PRODUCT_POLICY (android.policy_phone).  Stop.错误。

解决办法:

在build/tools/findleaves.sh中的第89行,

这一句find "${@:0:$nargs}" $findargs -type f -name "$filename" -print |

改为find "${@:1:$nargs-1}" $findargs -type f -name "$filename" -print |

2.frameworks/base/tools/aidl/AST.cpp:10: error: 'fprintf' was not declared in this scope的错误

解决办法:

下载gcc-4.3和g++-4.3

apt-get install gcc-4.3 g++-4.3

大约十多兆,然后

进入/usr/bin

cd /usr/bin

建个软连接

ln -s gcc-4.3 gcc

ln -s g++-4.3 g++

然后进入android目录下,执行make,就可以了。

3.

 

------------------------------------------------------------------------------------------------
error type : undeclared or Error 1.
------------------------------------------------------------------------------------------------
host C: emulator <= external/qemu/console.c
host C: emulator <= external/qemu/loader.c
host C: emulator <= external/qemu/sockets.c
external/qemu/sockets.c: In function ‘sock_address_init_resolve’:
external/qemu/sockets.c:637: error: ‘EAI_NODATA’ undeclared (first use in this function)
external/qemu/sockets.c:637: error: (Each undeclared identifier is reported only once
external/qemu/sockets.c:637: error: for each function it appears in.)
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/sockets.o] Error 1

 

=========================================================
 Solution:
=========================================================
The 1st way to fix:
Apparently you have to modify the makefile to fix it. 
/external/qemu/Makefile.android
# this is needed to build the emulator on 64-bit Linux systems
 ifeq ($(HOST_OS)-$(HOST_ARCH),linux-x86)
-  MY_CFLAGS += -Wa,--32
+  MY_CFLAGS += -Wa,--32 -D_GNU_SOURCE
 endif
 ifeq ($(HOST_OS),freebsd) 

The 2st way to fix:
commenting out the EAI_NODATA line
found in sockets.c file.
             err = EHOSTDOWN;
             break;

-        case EAI_NODATA:
+        /* case EAI_NODATA: */
         case EAI_NONAME:
             err = ENOENT;
             break; 

=========================================================

 

我在虚拟机里面make的,分了1G内存给他,处理器50%,一共花了两个小时才编译完成。编译完成后,在android目录下的out文件夹中,就是结果,也有两个G左右。

在out/target/product/generic目录下,有三个img文件,system.img,ramdisk.img,userdata.img,这三个就是需要的android系统镜像文件,放到模拟器中运行就行了。

运行出来之后,进入设置里面,可以看到自己编译的标识呢,嘿嘿,很有成就感的。

*********************************
$ sudo apt-get install lib32readline5-dev

lib32readline5-dev不存在,实际上只要libreadline5-dev 即可

************************************

 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值