Android编译1.下载android源码
2. 安装所需软件在开始编译之前,还需要在Ubuntu中安装下列软件(用"sudo apt-get install"命令来完成):flex、 bison、 gperf、 libsdl-dev、 libesd0-dev、 libwxgtk2.6-devbuild-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代码,另外需要编译kernelreference:http://blog.chinaunix.net/u2/85193/showart.php?id=14240771.修改makefile
#cd android/kernel#vi MakefileModify 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
阅读(1370) | 评论(0) | 转发(0) |