1. Preparations
1. Install jddk6
(1) from the official JDK websiteHttp://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.htmlDownload the jdk-6u29-linux-i586.bin file.
(2) run the JDK Installation File
$chmod a+x jdk-6u29-linux-i586.bin$jdk-6u29-linux-i586.bin
(3) Configure JDK Environment Variables
$sudo vim /etc/profile
#JAVAEVIRENMENTexportJAVA_HOME=/usr/lib/java/jdk1.6.0_29exportJRE_HOME=$JAVA_HOME/jreexportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
Save and exit editing, and restart the system.
2. Install the dependency package
$sudo apt-get install git-core gnupg flex bison gperf build-essential\zipcurlzlib1g-devlibc6-devlib32ncurses5-devia32-libs\x11proto-core-devlibx11-devlib32readline5-devlib32z-dev\libgl1-mesa-devg++-multilibmingw32tofrodospython-markdown\libxml2-utils
3. Use the repo tool to download the source code
(1) initialize Repo
$ Cd ~ $ Mkdir bin $ curlhttps: // dl-ssl.google.com/dl/googlesource/git-repo/repo> ~ /Bin/repo $ chmod A + x ~ /Bin/repo $ exportpath = $ path :~ /Bin (export environment variables)
(2) download the latest Android source code
$ Mkdir Android $ CD Android $ repo init-u https://android.googlesource.com/platform/manifest-bandroid-4.0.1_r1... (enter the user name and mailbox name) $ repo sync-j5... (Here we use five threads to download the source code. The download process is long and requires patience)
Compile source code 1
$ Source build/envsetup. shincludingdevice/Samsung/maguro/vendorsetup. shincludingdevice/Samsung/tuna/vendorsetup. shincludingdevice/Ti/panda/vendorsetup. shincludingsdk/bash_completion/ADB. bash $ make-j4 (compiled in 4 threads here)
After compilation, you will see similar output:
Targetramdisk:out/target/product/generic/ramdisk.imgTargetuserdatafsimage:out/target/product/generic/userdata.imgInstalledfilelist:out/target/product/generic/installed-files.txt
2 problems encountered during compilation
Compilation error:
<Command line>: 0: 0: Error: "_ fortify_source" redefinition [-werror] <built-in>: 0: 0: Note: This is the previously defined position cc1plus: all warnings are treated as error make: *** [out/host/linux-x86/obj/executables/obbtool_intermediates/main. o] Error 1
Cause:
Because the GCC version on the machine is too high, you need to replace it with 4.6 For recompilation.
Solution:
1) install GCC and G ++ of version 4.4.
$ sudo apt-get install gcc-4.4$ sudo apt-get install g++-4.4
2) Set GCC version to link GCC to 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) set the G ++ version to link g ++ to G ++-4.4.
$ sudo mv g++ g++.bak$ sudo ln -s g++-4.4 g++
4) after the settings are complete, re-compile.
3. Start the compiled image file from the simulator
1) set environment variables:
export PATH=~/android/out/host/linux-x86/bin:$PATHexport ANDROID_PRODUCT_OUT=~/android/out/target/product/generic
The linux-x86/bin stores the emulator tool, and the product/generic has the compiled image file.
2) Start the simulator
$emulatoremulator:WARNING: system partition size adjusted to match image file (162 MB >66 MB)
After startup:
3. Compile androidgoldfish Kernel
1) Go To The android4.0.1 source code directory and download the goldfish kernel source code.
$ 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) Modify makefile
goldfish$ gedit Makefile
Modify
ARCH ?=$(SUBARCH)CROSS_COMPILE ?=
Is
ARCH ?=armCROSS_COMPILE ?=arm-eabi-
3) export the cross-compiler directory as an environment variable
$ Export Path = $ path :~ /Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
4) Compile the kernel
goldfish$ make goldfish_armv7_defconfiggoldfish$ make
After compilation, you can see the output similar to the following:
OBJCOPY arch/arm/boot/zImageKernel: arch/arm/boot/zImage is ready
5) Start the kernel image from the simulator
$emulator -kernel ~/android/kernel/goldfish/arch/arm/boot/zImage &
After the simulator is started, you can view the kernel version information from Settings> system> aboutphone.