Chinaunix首页 | 论坛 | 博客
  • 博客访问: 525802
  • 博文数量: 150
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 1705
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-11 23:29
文章分类

全部博文(150)

文章存档

2011年(9)

2010年(25)

2009年(94)

2008年(22)

我的朋友

分类: LINUX

2008-11-19 14:19:29

Android编译
1.下载android源码
  
  
2. 安装所需软件
在开始编译之前,还需要在Ubuntu中安装下列软件(用"sudo apt-get install"命令来完成):
flex、 bison、 gperf、 libsdl-dev、 libesd0-dev、 libwxgtk2.6-dev
build-essential、 python、 valgrind、 curl、 git
另外,还需要安装jdk 1.5. 0_16。
3。下面可以开始编译Android了。
   $ tar -zxvf android_src.tar.gz
   $ cd android
   $ make
编译完成后,在源代码目录中多出一个名为out的目录,编译结果都在这个目录中。
生成的emulator等程序,存放在out/host/linux-x86/bin目录中;生成的几个image文件存入在 out/target/product/generic目录中,它们包括: ramdisk.img、 system.img、 userdata.img。
######################################################
######################################################
kernel编译
以上编译的是android代码,另外需要编译kernel
reference:
http://blog.chinaunix.net/u2/85193/showart.php?id=1424077
1.修改makefile
#cd android/kernel

#vi Makefile
Modify ARCH and CROSS_COMPILE
ARCH = arm

修改CROSS_COMPILE变量为:
CROSS_COMPILE=arm-none-linux-gnueabi-
这个就是刚刚的下载和解压的工具链的前缀了,旨在告诉make,在编译的时候要使用我们的工具链。

在Makefile中注释掉LDFLAGS_BUILD_ID这个变量:
例如将如下定义:
LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
$(call ld-option, -Wl$(comma)--build-id,))
修改为:
LDFLAGS_BUILD_ID=
#LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
# $(call ld-option, -Wl$(comma)--build-id,))
把它注释掉的原因是目前android的内核还不支持这个选项。--build-id选项,主要是用于在生成的elf
可执行文件中加入一个内置的id,这样在core dump,或者debuginfo的时候就可以很快定位这个模块是
哪次build的时候弄出来的。这样就可以避免,每次都把整个文件做一遍效验,然后才能得到该文件的是由
哪次build产生的。对于内核开发者来说,这是很不错的想法,可以节约定位模块版本和其影响的时间。
目前,该功能还出于early stage的状态,未来的android或许会支持,但至少目前的版本是不支持的。
所以,用#注释掉即可,或者害怕不保险的话,就加入LDFLAGS_BUILD_ID=空,这样即使编译的时候用了,
也只是一个空格而已。
对这个--build-id选项感兴趣的朋友,可以访问下面的网址,它的作者已经解释得非常明白了:
2.make config
#make arch/arm/configs/goldfish_defconfig
goldfish 是android emulator模拟的硬件架构

3.open EABI
如果需要支持JVM,则需要在kernel配置时打开EABI
#make menuconfig
选择kernel feature->EABI

4.编译
#make


阅读(1319) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~