交叉编译工具arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2拷贝到我的目录/home/lizm/
解压
$tar -jxvf arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
修改环境变量:
1.
$export PATH=$PATH:/home/lizm/arm_2009q3/bin
通过$export就可以看到PATH变量中多了我们添加的值,但是这个值在终端关闭后就会消失,可以选择第2、3方法。
2.
$echo export PATH=$PATH:/home/lizm/arm_2009q3/bin >> ~/.bashrc
这样修改后断开终端再次连接,输入命令export依然看见PATH之前设置的值。
3.
$cd /home/lizm
$vim .bashrc
将export PATH=$PATH:/home/lizm/arm_2009q3/bin添加到文件最后,退出保存编辑。
$source .bashrc
这个方法也可以永久保存设置的环境变量。
u-boot,kernel,android都放在同一个文件夹下,方便编译。
uboot编译:
$tar -xvzf tc4_uboot_origen_brd_ac75d722cf6304.12.08.08.tar.gz
$cd tc4_uboot
由于交叉编译工具是放在/home/lizm/目录下,所以在tc4_uboot目录下的Makefile要做一下修改,将CROSS_COMPILE修改为/home/lizm/arm-2009q3/bin/arm-none-linux-gnueabi-,保存退出
$./build_uboot.sh 编译
按照文档SEC_Exynos4x12_[SSCR][TC4]ICS_Installation_Guide_RTM1.0.2.pdf,应该编译出六个文件,可是只编译出3个文件。
kernel:
$tar -jxvf SEC_Android_Exynos4x12_TC4_Kernel_3.0.dvt.01.ics.rtm1.0.0.tar.bz2
$cd TC4_Kernel_3.0
同u_boot,更改CROSS_COMPILE为自己的目录,保存。
$make distclean
$make tc4_dvt_icecream_defconfig 这里可选的config文件有四种,参照文档选择相应板子的config。我选了tc4_dvt_ap11_icecream_nfc_defconfig,因为板子的uboot信息里提到了AP1.1
$make
编译成功不报错,会在arch/arm/boot/中看到zImage文件。
Android:
android的源代码,厂家给的是这样一个压缩包SEC_Android_Exynos4x12_TC4_ICS.dvt.01.ic....bz2,实际上应该是.tar.bz2类型,自己改一下文件名,然后解压缩。
$tar -jxvf SEC_Android_Exynos4x12_TC4_ICS.dvt.01.ic.tar.bz2
$cd TC4_ICS
$make clobber
$./build_android.sh
编译过程会有许多错误,可以参照http://blog.csdn.net/lizhenmingdirk/article/details/8472278进行修改。
编译成功后在TC4_ICS/out/target/product/smdk4x12/下有三个文件ramdisk.img, system.img, userdata.img,如果kernel和android是在同一文件夹下,且android目录下的build_android.sh中的KERNEL_DIR为kernel的文件夹名,则会还有另一个包update.zip。
如果在烧录的时候需要用到ramdisk-recovery-uboot.img这个文件,那么还需要经过一次编译,按照以下步骤:
1.确保第一次编译已经生成了system.img 和 ramdisk-uboot.img
2.找到文件TC4_ICS\device\samsung\smdk4x12\BoardConfig.mk
3.修改TARGET_NO_KERNEL:=false
4.编译命令:$./build_android.sh recovery
当编译成功后,在out目录下将会发现以下文件:full_smdk4x12-ota-eng.xxx.zip(xxx:user name),ramdisk-recovery.img