天天看点

android4.4内核编译(附源码)

编译环境如下图所示

android4.4内核编译(附源码)

1.下载源码

 由于国内有限制,所以我买了一台香港的VPS用来下载国外的资源。

git clone https://android.googlesource.com/kernel/msm.git  
cd msm 
git branch-a
git checkout remotes/origin/android-msm-hemmerhead-3.4  //根据实际的项行进设置
           

2.设置环境

1 终端进入原Android源码目录设置编译环境:
cd android-src/android4.4
source build/envsetup.sh
lunch 选择12,编译hemmerhead
export ANDROID_SRC_PATH=/home/(你的源码的位置)/android4.4
export PATH=$ANDROID_SRC_PATH/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH 
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-
           

3 切换到kernel内核源码所在目录,进行编译:

cd ../kernel-hammerhead/msm
make hammerhead_defconfig
make   
           

编译完成后bin文件在 arch/arm/boot/zimage-dtb目录下

重新生成boot.img

export TARGET_PREBUILT_KERNEL=$your_kernel_path/arch/arm/boot/zImage-dtb
编译成功后可以看到下面的输出:
OBJCOPY  arch/arm/boot/zImage
Kernel:     arch/arm/boot/zImage is ready
CAT           arch/arm/boot/zImage-dtb
Kernel:     arch/arm/boot/zImage-dtb is ready
编译完内核后,内核生成的路径为:kernel/msm/arch/arm/boot目录下的zImage-dtb文件(nexus 5是这个文件,nexus 4是zImage文件,请注意别弄错了
),把该文件复制到源码下的device/lge/hammerhead-kernel夹下(注意:nexus 4则为mako-kernel文件夹),覆盖掉同名文件。
编译内核:make bootimage 
           

4.将生成的内核烧写至手机

adb reboot bootloader
fastboot flash boot boot.img
           

5.碰到的一些问题

问题:在编译嵌入式Linux内核时出现了以下错误提示:Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.

解决方法:把kernel/timeconst.pl 文件中 373行的if (!defined(@val))改为if ([email protected]) 后,编译成功。

内核源码:链接:http://pan.baidu.com/s/1bpabsNP 密码:1m5j