三星a5手机壳:如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核
来源:百度文库 编辑:中财网 时间:2024/09/21 09:30:32
一 准备工作
1 安装javasdk 6
(2)执行jdk安装文件
$ chmod a+x jdk-6u29-linux-i586.bin复制代码
$ jdk-6u29-linux-i586.bin
(3)配置jdk环境变量
$ sudo vim /etc/profile复制代码
#JAVA EVIRENMENT
export JAVA_HOME=/usr/lib/java/jdk1.6.0_29
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
保存后退出编辑,并重启系统。
2 安装依赖包
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \复制代码
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils
3用repo工具下载源码
(1)初始化repo
$ cd ~复制代码
$ mkdir bin
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo >~/bin/repo
$ chmod a+x ~/bin/repo
$ export PATH=$PATH:~/bin(导出环境变量)
(2)下载android最新源码
$ mkdir android复制代码
$ cd android
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
...(输入用户名和邮箱名)
$ repo sync -j5
...(此处用5个线程开始下载源码,下载过程及其漫长,需要耐心等待)
二 编译源码
1 开始编译
$ source build/envsetup.sh复制代码
including device/samsung/maguro/vendorsetup.sh
including device/samsung/tuna/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
including sdk/bash_completion/adb.bash
$ make -j4(此处用4个线程编译)
编译完成后,会看到类似的输出:
Target ram disk: out/target/product/generic/ramdisk.img复制代码
Target userdata fs image: out/target/product/generic/userdata.img
Installed file list: out/target/product/generic/installed-files.txt
2 编译遇到的问题
编译错误:
<命令行>:0:0: 错误: “_FORTIFY_SOURCE”重定义 [-Werror]复制代码:0:0: 附注: 这是先前定义的位置
cc1plus:所有的警告都被当作是错误
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] 错误 1
原因:
因机器上的gcc版本过高,需替换成4.4.6重新进行编译。
解决方法:
1)安装4.4版本的gcc和g++
$ sudo apt-get install gcc-4.4复制代码
$ sudo apt-get install g++-4.4
2)设置gcc版本,使gcc链接到gcc-4.4
$ ls -l /usr/bin/gcc*复制代码
lrwxrwxrwx 1 root root 7 2011-11-01 23:56 /usr/bin/gcc -> gcc-4.6
-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4
-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6
$ cd /usr/bin
$ sudo mv gcc gcc.bak
$ sudo ln -s gcc-4.4 gcc
3)设置g++版本,使g++链接到g++-4.4
$ sudo mv g++ g++.bak复制代码
$ sudo ln -s g++-4.4 g++
4)设置完毕后,重新进行编译即可
3从模拟器启动编译后的镜像文件
1)设置环境变量:
export PATH=~/android/out/host/linux-x86/bin:$PATH复制代码
export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic
其中linux-x86/bin存放模拟器emulator工具,product/generic存在编译后的镜像文件。
2)启动模拟器
$ emulator复制代码
emulator: WARNING: system partition size adjusted to match image file (162 MB > 66 MB)
启动后的截图:
三 编译androidgoldfish内核
1)进入android4.0.1源码目录,下载goldfish内核源码
$ mkdir kernel复制代码
$ cd kernel
$ git clone http://android.googlesource.com/kernel/goldfish.git
$ cd goldfish
$ git branch -a
* (no branch)
master
remotes/origin/HEAD -> origin/master
remotes/origin/android-goldfish-2.6.29
remotes/origin/master
$ git checkout remotes/origin/android-goldfish-2.6.29
2)修改Makefile
goldfish$ gedit Makefile
修改
ARCH ?= $(SUBARCH)复制代码
CROSS_COMPILE ?=
为
ARCH ?= arm复制代码
CROSS_COMPILE ?= arm-eabi-
3)导出交叉编译器目录为环境变量
$ export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin复制代码
4)编译内核
goldfish$ make goldfish_armv7_defconfig复制代码
goldfish$ make
编译完成后,可看到类似如下的输出:
OBJCOPY arch/arm/boot/zImage复制代码
Kernel: arch/arm/boot/zImage is ready
5)从模拟器中启动内核镜像
$emulator -kernel ~/android/kernel/goldfish/arch/arm/boot/zImage &复制代码
启动模拟器后,可从Settings->System->AboutPhone中查看内核版本信息。
非32位文件在WINXP下如何运行
如何在DOS下运行我用VB编的程序?
如何在命令行下区分当前操作系统是64位or32位?
如何在网上销售编织机
请问下64位电脑和32位电脑要如何区别?
不知那位知道如何在打不开帮助的情况下,如何系统还原。
用HTML编辑要在什么工具下运行呢?
C语言编的程序怎样才能在windows下运行
在WindowsXP下怎样使用32位色??
我的WINDOWS2003不能安装32位的软件,说我在16位状态下?
各位,32位的Windows Vista 5270能在64位平台下正常使用吗?
帮忙编下
我的WINDOWS2003不能安装32位的软件,说我在16位状态下,怎么才能让2003在32位状态下?
如何在windowsXP系统下制作8位的BMP图片?
请问在64位XP操作系统下如何删除桌面回收站图标?
街头篮球在篮下如何把卡住位的人挤走
在市场竟争如此激烈的情况下,高价位的产品如何抢占市场?
请问那位朋友知道如何在XP下玩毛利元就?
不知道那位可以帮忙编个程序。在此多谢了!!
64位操作系统和32位操作系统有何区别,有何优点,在64位操作系统下可运行其它32位软件吗?谢谢.
在LInux(Unix)下编的C程序在VC6.0下通不过编译?
如何在电脑上编文曲星的gvbasic
HTML编网页时如何在数字上画斜线?
WORD文挡中如何在字符右上角编数字?