一准备工作
1安装javasdk6
(1)从jdk官方网站http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html下载jdk-6u29-linux-i586.bin文件。
(2)执行jdk安装文件
[html] view plain copy
1. $chmod a+x jdk-6u29-linux-i586.bin
2. $jdk-6u29-linux-i586.bin
(3)配置jdk环境变量
[html] view plain copy
1. $sudo vim /etc/profile
[html] view plain copy
1. #JAVAEVIRENMENT
2. exportJAVA_HOME=/usr/lib/java/jdk1.6.0_29
3. exportJRE_HOME=$JAVA_HOME/jre
4. exportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
5. exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
保存后退出编辑,并重启系统。
2安装依赖包
[html] view plain copy
1. $sudo apt-get install git-core gnupg flex bison gperf build-essential\
2. zipcurlzlib1g-devlibc6-devlib32ncurses5-devia32-libs\
3. x11proto-core-devlibx11-devlib32readline5-devlib32z-dev\
4. libgl1-mesa-devg++-multilibmingw32tofrodospython-markdown\
5. libxml2-utils
3用repo工具下载源码
(1)初始化repo
[html] view plain copy
1. $cd ~
2. $mkdir bin
3. $curlhttps://dl-ssl.google.com/dl/googlesource/git-repo/repo>~/bin/repo
4. $chmod a+x ~/bin/repo
5. $exportPATH=$PATH:~/bin(导出环境变量)
(2)下载android最新源码
[html] view plain copy
1. $mkdir android
2. $cd android
3. $ repo init -u https://android.googlesource.com/platform/manifest -bandroid-4.0.1_r1
4. ...(输入用户名和邮箱名)
5. $repo sync -j5
6. ...(此处用5个线程开始下载源码,下载过程及其漫长,需要耐心等待)
二 编译源码
1开始编译
[html] view plain copy
1. $source build/envsetup.sh
2. includingdevice/samsung/maguro/vendorsetup.sh
3.
4. includingdevice/samsung/tuna/vendorsetup.sh
5.
6. includingdevice/ti/panda/vendorsetup.sh
7.
8. includingsdk/bash_completion/adb.bash
9.
10. $make-j4(此处用4个线程编译)
编译完成后,会看到类似的输出:
[html] view plain copy
1. Targetramdisk:out/target/product/generic/ramdisk.img
2. Targetuserdatafsimage:out/target/product/generic/userdata.img
3. Installedfilelist:out/target/product/generic/installed-files.txt
2编译遇到的问题
编译错误:
[html] view plain copy
1. <命令行>:0:0:错误:“_FORTIFY_SOURCE”重定义[-Werror]
2.
3. <built-in>:0:0:附注: 这是先前定义的位置
4.
5. cc1plus:所有的警告都被当作是错误
6.
7. make:*** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o]错误 1
原因:
因机器上的gcc版本过高,需替换成4.4.6重新进行编译。
解决方法:
1)安装4.4版本的gcc和g++
[html] view plain copy
1. $ sudo apt-get install gcc-4.4
2. $ sudo apt-get install g++-4.4
2)设置gcc版本,使gcc链接到gcc-4.4
[html] view plain copy
1. $ ls -l /usr/bin/gcc*
2.
3. lrwxrwxrwx 1 root root 7 2011-11-01 23:56 /usr/bin/gcc -> gcc-4.6
4.
5. -rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4
6.
7. -rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6
8.
9. $ cd /usr/bin
10. $ sudo mv gcc gcc.bak
11. $ sudo ln -s gcc-4.4 gcc
3)设置g++版本,使g++链接到g++-4.4
[html] view plain copy
1. $ sudo mv g++ g++.bak
2. $ sudo ln -s g++-4.4 g++
4)设置完毕后,重新进行编译即可
3从模拟器启动编译后的镜像文件
1)设置环境变量:
[html] view plain copy
1. export PATH=~/android/out/host/linux-x86/bin:$PATH
2.
3. export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic
其中linux-x86/bin存放模拟器emulator工具,product/generic存在编译后的镜像文件。
2)启动模拟器
[html] view plain copy
1. $emulator
2.
3. emulator:WARNING: system partition size adjusted to match image file (162 MB >66 MB)
启动后的截图:
三 编译androidgoldfish内核
1)进入android4.0.1源码目录,下载goldfish内核源码
[html] view plain copy
1. $ mkdir kernel
2. $ cd kernel
3. $ git clone http://android.googlesource.com/kernel/goldfish.git
4. $ cd goldfish
5. $ git branch -a
6. * (no branch)
7.
8. master
9.
10. > origin/master
11.
12. remotes/origin/android-goldfish-2.6.29
13.
14. remotes/origin/master
15.
16. $ git checkout remotes/origin/android-goldfish-2.6.29
2)修改Makefile
[html] view plain copy
1. goldfish$ gedit Makefile
修改
[html] view plain copy
1. ARCH ?=$(SUBARCH)
2. CROSS_COMPILE ?=
为
[html] view plain copy
1. ARCH ?=arm
2. CROSS_COMPILE ?=arm-eabi-
3)导出交叉编译器目录为环境变量
$ export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
4)编译内核
[html] view plain copy
1. goldfish$ make goldfish_armv7_defconfig
2.
3. goldfish$ make
编译完成后,可看到类似如下的输出:
[html] view plain copy
1. OBJCOPY arch/arm/boot/zImage
2. Kernel: arch/arm/boot/zImage is ready
5)从模拟器中启动内核镜像
[html] view plain copy
1. $emulator -kernel ~/android/kernel/goldfish/arch/arm/boot/zImage &
启动模拟器后,可从Settings->System->AboutPhone中查看内核版本信息。
标签:bin,gcc,4.0,32,html,源码,plain,copy,view From: https://blog.51cto.com/u_2198048/7048861