自己编译的android 编译内核模块内核怎么烧录到手机上

4232人阅读
Android(22)
学习随笔(17)
三.编译android源码和工具包
1.编译android源码
进入source目录下,执行make 即可。
编译完成后,可以在源码目录的out/target/product/generic/目录下看到编译好的ramdisk.img、system.img和userdata.img了。
编译中出现的问题:
Ubuntu11.10自带的gcc与g++版本为4.6,用该版本编译android时会遇到一些错误,错误如下所示:
$ java -version
java version &1.6.0_23&
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.2)
OpenJDK Client VM (build 20.0-b11, mixed mode, sharing)
原来可能是没有安装JDK1.6。
有的说是JDK安装不对,再来安装:
在ubuntu11.10上安装jdk1.6
JDK:Linux X86下SUN公司的 jdk-6u30-linux-i586.bin
第一:下载JDK。下载地址/technetwork/java/javase/downloads/jdk-6u30-download-1377139.html,选择Linux X86下的 jdk-6u30-linux-i586.bin,这样直接用迅雷下载,速度快,放在本机上。
第二:将文件转移到Ubuntu系统下,具体转移的方式采用网上邻居的方式。具体参见我的另外一篇博文/BreakMind/archive//2332522.html。
第三:打开Ubuntu 11.10的终端。这里说一下,Ubuntu 11.10的终端已经很难点击查看到,我知道打开Ubuntu 11.10的终端方式有两种。1、快捷键,Ctrl+Atl+T ,这三个键联合起来用就可以打开终端。2、鼠标点击左上角的Ubuntu图标(或者点击微软键),输入Terminal,这个时候就显示出终端了。
第四:命令行,实现整个安装过程。(说明一下,Ubuntu 11.10有自带的OpenJDK,这是整个安装过程中,需要注意的问题)
首先把JDK拷贝到指定的目录,然后解压缩拷贝后的文件到指定的目录中,具体命令行如下:
&&& $ sudo cp jdk-6u30-linux-i586.bin /usr/lib/jvm
&&& $ cd /usr/lib/jvm
&&& $ sudo ./jdk-6u30-linux-i586.bin
&&& $ sudo mv jdk1.6.0_30/ java-1.6.0_30-sun/
&&& $ sudo ln -s java-1.6.0_30-sun java-6-sun
&&& $ sudo rm jdk-6u30-linux-i586.bin
其次设置环境变量,主要是PATH、CLASSPATH和JAVA_HOME,注意PATH最后所添加的bin目录:
&&& $ sudo vi /etc/environment
&&& PATH=&/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/u
&&& sr/lib/jvm/java-6-sun/bin&
&&& CLASSPATH=&/usr/lib/jvm/java-6-sun/lib&
&&& JAVA_HOME=&/usr/lib/jvm/java-6-sun&
然后就是要告诉系统,我们使用的sun的JDK,而非OpenJDK了:
&&& $ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-6-sun/bin/java 300
&&& $ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-6-sun/bin/javac 300
&&& $ sudo update-alternatives --config java
此时屏幕会有如下显示:
选择 路径 优先级 状态
&&& ------------------------------------------------------------
&&& 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 自动模式
&&& 1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 手动模式
&&& * 2 /usr/lib/jvm/java-6-sun/bin/java 300 手动模式
要维持当前值
请按回车键,或者键入选择的编号:我们输入值:2 回车
如上所示,这样就设置好了要使用的java了。最后我们验证一下:
&&& $ java -version
&&& java version &1.6.0_27&
&&& Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
&&& Java HotSpot(TM) Server VM (build 20.2-b06, mixed mode)
haili@haili-desktop:~$sudo gedit ~/.bashrc
在文件的尾部追加:
export JAVA_HOME=/usr/bin/jdk
export JRE_HOME=JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
使更改生效。保存文件,执行
haili@haili-desktop:~$source ~/.bashrc
有的说这样可以解决,但是对我来说似乎只有一个结果,那就是失败。好像每走一步哪怕是小得微乎其微的一步都是如此的艰难和充满荆棘。不过既然选择了这条路,没别的捷径,那就一直往前走吧,哪怕是头破血流又如何,大不了再来一次。可以肯定的是这其中的过程和酸甜苦辣绝对只有自己可以体会得到。
把JDK1.6重新安装,现在可以make了,原来的问题是:在安装时执行下面步骤后:
$ sudo add-apt-repository &deb / lucid partner&
$ sudo apt-get update
有一提示,说是不能读取源,需要用“apt-get& update”来更新才能解决问题,这时要执行:
$ apt-get update
到这里要注意了,此时还要重新执行:
$ sudo apt-get update
后才能执行:
$ sudo apt-get install sun-java6-jdk
否则就可能出现上面的棘手奇怪问题,下面总结一下安装JDK1.6的步骤:
$ sudo add-apt-repository &deb
lucid partner&
$ sudo apt-get update
$ apt-get update //这一步在我这里要有
$ sudo apt-get update //这步也必须执行,否则make总是不成功,这个问题整整弄得小弟多开销了一天时间
$ sudo apt-get install sun-java6-jdk
这里就是make后生成的ramdisk.img、system.img和userdata.img了,期待以久的东西。其实它到底编译多长时间我也不清楚,听说是挺长的,不过我是在下班前直接编译,不关电脑,第二天过来时已经全部编译完成,像我的电脑配置一般要两到三个小时这样吧。
应该是因为版本的原因,可以考虑用低一些版本比如4.4。
解决方法:
&&&ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错:
1 $sudo apt-get install gcc-4.4
2 $sudo apt-get install g++-4.4
装完后进入到/usr/bin目录下
$ls -l gcc*&& 会显示以下结果:
发现gcc链接到gcc-4.6, 需要将它改为链接到 gcc-4.4,方法如下:
1 $sudo mv gcc gcc.bak
2 $sudo ln -s gcc-4.4 gcc
同理,对g++也做同样的修改:
1 $ls -l g++*
需要将g++链接改为g++-4.4:
1 $sudo mv g++ g++.bak
2 $sudo ln -s g++-4.4 g++
再查看gcc和g++版本号:
g++ -v
均显示gcc version 4.4.6 ,说明gcc 4.4安装成功。&
2.编译android 内核
1.设置环境变量
&export& PATH=$PATH:/Android/source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
&export& ARCH=arm&//注意=后面不要有空格,export不要写成Export,否则会有提示找不到命令
source& ~/.hashrc&&&
//使修改生效
2.设置交叉参数
把&kernel/goldfish目录下面的Makefile中把这行:
CROSS_COMPILE&?=
CROSS_COMPILE&?=arm-eabi-
别外还有把LDFLAGS_BUILD_ID=$(patsubst& –W1$(comma)%,%, $(call ld-option, -W1$(comma) –build-id,),改为:
&&&&&&&&&&&&&&& LDFLAGS_BUILD_ID=
有的网友说也可以通过下面的方式来设置:
$&export&ARCH=arm&&$&export&SUBARCH=arm&&$&export&CROSS_COMPILE=arm-eabi-
$&source&build/envsetup.sh&&&&$&lunch&full-eng&&&&&&&&&&&&
&&&&&& 其实还要注意,一定要执行这两步:
export& PATH=$PATH:/Android/source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
&export& ARCH=arm& //注意=后面不要有空格,export不要写成Export,否则会有提示找不到命令
否则会的提示:
&当时就是因为这个也走了不少的弯路,浪费不少时间,开始还以为是上面的Makefile的设置出现问题。
到这里可以开始执行配置操作:
$&make&&clean
$&make&goldfish_armv7_defconfig&&& //不能用配置文件:make&goldfish_defconfig,否则后面步骤可能出现意想不到的结果
make&goldfish_armv7_defconfig&后得到如下截图:
到这里圆满完成编译。在arch/arm/boot目录下面会有生成的zImage文件。ls arch/arm/boot
3. 下面步骤不是编译SDK
&&&&&&&& 现在不知道编译出来的镜像是否可用,要测试和使用SDK进行开发,就需要编译SDK,当然也是可以从官方网站上下载SDK。由于编译Android源码和内核时并不会自动编译SDK,需要我们自已动手来完成,进入Android源码目录执行:
$ make PRODUCT-sdk-sdk
&&&&&&&& 为了避免在搭建环境时编译的SDK无效,最好是第一次不要使用make sdk来编译,而应该使用上面的make PRODUCT-sdk-sdk。还有在编译完成后后在目录/out/host/linux-x86/sdk下面生成android-sdk_eng.xxx_linux-x86.zip和android-sdk_eng.xxx_linux-x86。做好SDK的备份,因为后面的模块编译是可能会把SDK目录下面的文件给清除掉。
4.& 编译单独模块
&&&&& Android允许对应用程序进行单独编译,但是这样必需重新生成system.img,现在为了省时间,我不编译单独模块。
5.& 编译ADT
&&&&&& 编译ADT的主要目的是使用Eclipse来开发应用程序,当然如果不想自己编译也是可以从官方网站上下载安装或者干脆在线更新都可以。
5.1& 配置环境
&&&&&& 要编译ADT首先要确保系统中已经安装了Eclipse。如果没有安装,则在编译ADT时会下载安装,注意这个是要超级用户的权限,否则不能安装也不能编译。我是直接编译ADT,再让它自己下载安装Eclipse。执行:
$& sdk/eclipse/scripts/build_server.sh&&& /Android/source/adt(这里是自己的源码存放目录,要根据自己情况来写)
但是编译时它却不会自己下载,有下面提示:
看来得真要自己到官方网站去下载再安装。从提示来看应该是可以从这个网站下载所需要的:
我是从这里下载:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& eclipse-rcp-galileo-SR2-linux-gtk.tar.gz
只要单击eclipse-rcp-galileo-SR2-linux-gtk.tar.gz就可以通过迅雷下载。
要是从前者下载则点击下列兰色部分即可用迅雷下载:
&下载完后,从提示可以看到:
Downloading and installing Eclipse in /buildbot/eclipse-android/3.5.2
要求我们把Eclipse安装在/buildbot/eclipse-android/3.5.2目录下。
&gedit& ~/.bashrc在文件后面加上:
ECLIPSE_HOME=$PATH:/opt/Boardcon/Android/source_4.0.1/adt
$ sdk/eclipse/scripts/build_server.sh&&&& /Android/source/adt
ADT编译完成。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:253026次
积分:3056
积分:3056
排名:第8725名
原创:30篇
转载:122篇
评论:48条
(1)(4)(1)(1)(1)(1)(1)(1)(1)(5)(4)(16)(29)(86)编译Android4.3内核源代码 - 博客频道 - CSDN.NET
就这么Android着
沉溺于Android的世界里不可自拔...
分类:Android
& & &------------------------------------------------------------------------------------------------------
& & & &此文章仅作为学习交流所用
& & & &转载或引用请务必注明原文地址:
& & & &&& & & & & &&
& & & &或联系作者:&
& & & &谢谢!&& && & & & & & & & & &
& & &------------------------------------------------------------------------------------------------------
& & 在上一篇文章记录了Android4.3源代码的下载,编译和运行模拟器的学习过程,从下载下来的源码目录中我们不难发现,Android源代码工程并没有包含Linux内核代码,也就是缺少Kernel代码。
& & 那么,Android源码里面没有Kernel代码,我们之前又怎么可以通过编译源代码运行一个Android的模拟器呢?那是因为启动模拟器时,Linux Kernel镜像默认使用:prebuilt/qemu-kernel/arm/kernel目录下的kernel-qemu文件。因此,如果我们想要手机或者模拟器运行特定的Kernel内核,我们就需要另外下载编译和运行Kernel内核代码了。下面,让我们一起学习Linux Kernel下载,编译和模拟器运行指定内核的过程。
同样,这个过程,官网有有详细说明,同样,官网地址:
一. 下载Android Kernel内核源代码
& & 很明显,我们需要先把Android源代码目录中没有的kernel下载下来。首先,进入Android源码目录,新建 一个目录,命名为kernel
cd ~/Android4.3
mkdir kernel
& & 选择下载我们想要的内核代码,至于运行模拟器需要下载哪个kernel,可参考如下官网的说明
& & 因为我们现在做的是为之前的模拟器指定特定的内核,所以按照官网的说明,应该选择goldfish作为我们的内核代码
& &Goldfish是一种虚拟的ARM处理器,在Android的仿真环境中使用。在Android的发展过程中,Goldfish内核的版本也从开始的linux2.6.25升级到了linux2.6.29,现在又升级到全新的linux-3.4.它的核心内容存放在:arch/arm/mach-goldfish
因此,进入kernel,使用git clone命令将内核代码下来,这个需要一点时间
$ cd kernel
$ git clone /kernel/goldfish.git&&
& & 当我们下载完成之后,kernel目录中会多出来一个goldfish目录(下载不同的内核代码,其生成的目录相应改变),进入goldfish目录
cd goldfish
& & 选择一条支线代码作为我们的内核代码,可使用如下命令进行支线代码的查看
$ git branch -a
& & 虽说Android是基于Linux开发出来的手机系统,但是,Android Kernel相比于标准的Linux Kernel,还是有一些稍微的不同的
& & 因为我们这里是使用Android模拟器来运行Android系统的,所以,应该选择android-goldfish-xxx的,这里我尝试使用最新的Android kernel来作为模拟器的内核。因此,在goldfish目录下执行下面语句开始指定最新的支线代码:
$ git checkout remotes/origin/archive/android-gldfish-3.4
& & 执行完毕之后,原来是空文件夹的goldfish,现在就出现了Linux的内核源代码了。
二. 编译Android Kernel内核源代码
第一步:配置交叉编译工具路径到环境变量并修改MK文件
& &&编译Android内核源代码需要用到交叉编译工具,它位于Android源码工程的prebuilds的子目录中,在以前的Android源码中,它具体的位置是prebuilds/linux-x86/toolchain的子目录中,但是,不知从什么时候起,它现在(Android4.3)放在prebuilts/gcc/linux-x86/arm/的子目录中。
& &因此,进入goldfish目录,将交叉编译工具的路径配置进来 :
$ export PATH=$(pwd)/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH
& & 另外,在编译内核之前,需要先修改一下goldfish目录下的makefile文件,首先打开该文件,找到如下地方:
& & 在该Makefile文件中,我们将ARCH的值设置为arm,CROSS——COMPILE的值设置成arm-eabi-,如下图所示:
& & arm设置Android模拟器所使用的CPU是ARM体系结构的,而arm-eabi-,表示所使用的交叉编译工具名称是以“arm-eabi-”作为前缀的。以上这个步骤,也可以用以下指令来来完成:
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
第一步:根据CPU体系架构修改硬件配置文件
& & 配置内核用到以下两条指令的其中一条
make goldfish_defconfig
或 make goldfish_armv7_defconfig
& & 至于具体取用哪条配置指令,视你的Android模拟器CPU体系构架而定。如果是arm v5版本的,则使用make goldfish_defconfig,而如果是arm v7版本的,则使用make goldfish_armv7_defconfig。那么,怎么知道你的模拟器CPU体系构架的版本呢?首先,和以前一样,进入源码目录,启动一个默认的模拟器。但是,注意这一次在emulator命令后加一个参数 &,表明以后台方式运行模拟器,以便于我们可以继续在终端输入命令查看CPU配置。如果没有加&,那么,没有关掉模拟器,是无法继续输入命令的。
guoke5@guoke5-pc:~$ cd /home/guoke5/Android4.3/
guoke5@guoke5-pc:~/Android4.3$ . build/envsetup.sh
guoke5@guoke5-pc:~/Android4.3$ lunch full-eng
guoke5@guoke5-pc:~/Android4.3$ emulator & (注意加&)
& & 此时,以后台形式开始运行默认模拟器,在终端中搞一下回车,可以继续操作终端,输入以下指令,查看CPU配置。
guoke5@guoke5-pc:~/Android4.3$ adb shell
root@generic:/ # cat /proc/cpuinfo
& & 很清楚可以知道,该模拟器CPU是arm v7版本的,因此,这里我们使用make goldfish_armv7_defconfig指令,其实这条指令的实质是将arch/arm/configs/目录下的goldfish_armv7_defconfig文件复制给 & .config文件,如下图所示:
第三步:执行make命令开始真正编译内核
编译结束之后,会提示&Kernel: arch/arm/boot/zImage is ready,表示编译成功,而且会在“kernel/goldfish/arch/arm/boot/”目录下生成名为zImage的文件,这个就是我们自己编译好的Android内核镜像文件。
三. 指定内核运行Android模拟器
& & &&在上一篇文章,&我们用emulator命令运行了一个Android4.3的模拟器,但是这个命令并没有带参数,所以,它会使用一个默认的模拟器,运行默认的内核镜像,这个默认的内核镜像zImage是位于Android源码目录下的prebuilds/qemu-kernel/arm子目录中的kernel-qemu文件
(老版本的是在out/host/linux-x86/bin子目录中kernel-qemu)。我们,我们用 -kernel选项来让模拟器运行我们刚刚编译好的内核,在源码目录中,执行
emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage &
& & 指令后面带了参数 &,表示在后台运行Android模拟器,便于我们可以在终端中继续输入命令查看是不是已经运行了我们自己编译的内核版本。模拟器正常运行:
接着继续在终端中输入命令查看内核镜像信息:
guoke5@guoke5-pc:~/Android4.3$ adb shell
root@generic:/ # cd proc
提示如下信息:
说明此时模拟器运行的内核镜像的版本是Linux Version 3.4.0,编译的主机名是guoke5@guoke5-pc,编译时间是Mon Aug 12 16:59:45 CST 2013,也就是刚刚,通过这些信息,可以肯定,此时模拟器运行的内核镜像,就是我们刚编译完的zImage镜像文件。可以通过下面两张图片比较两者的不同
& & 第一张图片是默认启动的模拟器,而第二张图片则是我们刚刚编译运行的模拟器,通过查看两者的内核版本信息,也可以发现两者的不同
& & 到此,Android内核初步编译成功!!!
luzhenrong45
排名:千里之外
(27)(17)(3)(3)(2)(1)(3)(2)(5)1040人阅读
SSD学习随笔(2)
&部分在编译过程中需要的工具可在资源下载页下载
操作系统:ubuntu10.04 64位;安卓手机:Nexus5;手机Android版本:4.4.4
注意:笔者在完成以下操作时在root权限下进行,建议进入root权限后开始以下操作
Android源码\内核下载及编译
1、&建立编译环境
a)&&&&&&&&安装JDK 1.6版本
&&&&&&&&&&&&&&&&&&&&&&&&i.&&&&&&&&&&&&&下载jdk-6u27-linux-x64.bin文件
&&&&&&&&&&&&&&&&&&&&&&ii.&&&&&&&&&&&&&在/usr/lib/目录下新建java文件夹&&&
mkdir /usr/lib/java
&&&&&&&&&&&&&&&&&&&&&iii.&&&&&&&&&&&&&将jdk文件拷贝到java文件夹中,并执行该文件
./jdk-6u27-linux-x64.bin
&&&&&&&&&&&&&&&&&&&&&iv.&&&&&&&&&&&&&配置环境变量
gedit /etc/environment
在打开文件中加入下列语句
PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/java/jdk1.6.0_27”
JAVA_HOME=/usr/lib/java/jdk1.6.0_27/
CLASSPATH=.:$JAVA_HOME\lib\tools.jar:$JAVA_HOME\lib\dt.jar
&&&&&&&&&&&&&&&&&&&&&&v.&&&&&&&&&&&&&使修改的环境变量立刻生效
source /etc/environment (重新启动亦可)
&&&&&&&&&&&&&&&&&&&&&vi.&&&&&&&&&&&&&查看当前java jdk版本是否为1.6 版本
在终端输入 java –version
若显示为java version “1.6.0_27”则说明jdk 1.6版本安装成功
b)&&&&&&&&安装ubuntu下特定的工具包
使用apt-get命令来安装特定的工具包
apt-get install git-coregnupg flex bison gperf build-essential \
zip curl zlib1g-devlibc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-devlibx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-devg++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
除了用apt-get命令安装特定的工具包之外,可在ubuntu的系统-系统管理-新立得软件包管理器进行查找对应软件包并选择安装或升级 (笔者采取新立得安装方式)。
在完成工具包下载后,我们还需要对git版本进行升级
apt-add-repositoryppa:git-core/ppa
apt-get update
apt-get dist-upgrade
2、&下载Android源码(编译源码用到了其中的NDK,ADB,交叉编译器,整个编译过程较长时间,编译完成后可开启模拟器)
a)&&&&&&&&下载Repo
PATH=~/bin:$PATH
curl /git-repo-downloads/repo& ~/bin/repo
chmod a+x ~/bin/repo
b)&&&&&&&&下载Android源码
&&&&&&&&&&&&&&&&&&&&&&&&i.&&&&&&&&&&&&&在当前用户的根目录下创建Android平台文件夹
mkdir Android_platform
cd Android_platform
&&&&&&&&&&&&&&&&&&&&&&ii.&&&&&&&&&&&&&利用repo init下载源码
repo init -u/platform/manifest -b android-4.4.4_r2
在下载过程中会中断要求输入用户的邮箱和用户名
git config –globaluser.email “email@example”
git config --global user.name“your name”
输入认证用户名和邮箱后,输入以下命令重新下载
repo init -u/platform/manifest -b android-4.4.4_r2
(若在下载过程中意外中断,可重新输入repo sync从中断点开始重新下载)
&&&&&&&&&&&&&&&&&&&&&iii.&&&&&&&&&&&&&执行envsetup脚本
在Android目录下执行以下语句
cd& ~/Android_platform
source./build/envsetup.sh
输入lunch语句,选择Android产品类型(笔者默认选择full-eng版本)
lunch full-eng
&&&&&&&&&&&&&&&&&&&&&iv.&&&&&&&&&&&&&编译源码
或者可选择make –jN语句编译,其中N取决于开发机器的CPU数,每个CPU的核数以及每个核心的线程数(例 make –j4)
注意:若出现段错误,继续make命令即可
3、&编译内核代码并烧录到手机
a)&&&&&&&&下载Android内核源码
在Android项目文件夹下创建kernel文件夹,并下载内核源码
cd ~/Android_platform/
mkdir kernel
git clone /kernel/msm.git
注意:由于实验手机设备为Nexus 5,因此我们选择内核代码为msm.git
b)&&&&&&&&checkout所选内核版本
cd ~/Android_platform/kernel/msn
git branch –a
git checkoutremotes/origin/android-msm-hammerhead-3.4-kitkat-rm2
c)&&&&&&&&修改Makefile文件支持交叉编译器
cd~/Android_platform/kernel/msm/
gedit Makefile
修改Makefile文件下述内容:
export KBUILD_BUILDHOST:= $ (SUBARCH)
ARCH&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ?= $(SUBARCH)
CROSS_COMPLETE&&&&&&&&&& ?= $ (CONFIG_CROSS_COMPILE : “%” =%)
将后面两行修改为:
ARCH&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ?= arm
CROSS_COMPLETE&&&&&&&&&& ?= arm-eabi-
修改环境变量识别arm-eabi-
exportPATH=$PATH:~/Android_platform/prebuilts/gcc/linux-86/arm/arm-eabi-4.7/bin
d)&&&&&&&&打开内核中支持IO tracer选项
make hammerhead_defconfig
make menuconfig
在此之后,选择弹出的界面框中的kernel hacking-&Tracers-&Supportfor tracing block IO actions
返回主界面后选择Save an Alternate ConfigurationFile.
e)&&&&&&&&编译内核
编译成功后可以看到下面的输出:
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
4、&制作boot.img文件
a)&&&&&&&&下载bootimg-tools工具
mkdir ~/Android_platform/boot-img
cd ~/Android_platform/boot-img
git clone /pbatard/bootimg-tools.git
下载完成后,执行下列语句
cd bootimg-tools/
gcc mkbootfs.c –o mkbootfs –I../include
mkdir android_boot_tools_bin
cd android_boot_tools_bin/
cp../bootimg-tools/mkbootimg/mkbootimg ./
cp../bootimg-tools/mkbootimg/unmkbootimg ./
cp ../bootimg-tools/cpio/mkbootfs ./
b)&&&&&&&&配置环境变量
gedit /etc/environment
将PATH修改为以下内容:
PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/java/jdk1.6.0_27:/root/Android_platform/boot-img/android_boot_tools_bin”
source /etc/environment
c)&&&&&&&&下载boot.img
下载地址:
/dl/android/aosp/hammerhead-ktu84q-factory-ae475293.tgz
在~/Android_platform/boot-img/下新建文件夹original-boot-img
mkdir~/Android_platform/boot-img/original-boot-img
解压该压缩包中的boot.img至~/Android_platform/boot-img/original-boot-img
执行下述命令语句:
cp~/Android_platform/kernel/msm/arch/arm/boot/zImage-dtb~/Android_platform/boot-img/
在~/Android_platform/boot-img/android_boot_tools_bin目录下执行:
./unmkbootimg –i boot-img/original-boot-img/boot.img
执行完unmkbootimg后会出现下述语句
kernel written to 'kernel' (8331496bytes)
ramdisk written to 'ramdisk.cpio.gz' (498796 bytes)
To rebuild this boot image, youcan use the command:
mkbootimg --base 0 --pagesize 2048--kernel_offset 0x --ramdisk_offset 0x --second_offset0x00f00000 --tags_offset 0x --cmdline 'console=ttyHSL0,androidboot.hardware=hammerhead&user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1'
--kernel kernel --ramdiskramdisk.cpio.gz -o original-boot-img/boot.img
执行上述中的”mkbootimg –base 0 –pagesize……………”语句修改为下述语句,并执行
mkbootimg --base 0 --pagesize 2048--kernel_offset 0x --ramdisk_offset 0x --second_offset0x00f00000 --tags_offset 0x --cmdline 'console=ttyHSL0,androidboot.hardware=hammerhead&user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1'
--kernel ~/Android_platform/ boot-img/zImage-dtb --ramdisk
~/Android_platform/boot-img/android_boot_tools_bin/ramdisk.cpio.gz-o
~/Android_platform/boot-img/original-boot-img/boot.img
d)&&&&&&&&烧录boot.img
adb start-server
adb reboot bootloader
fastboot flash boot~/Android_platform/boot-img/boot.img
fastboot reboot
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4569次
排名:千里之外
(4)(5)(2)(1)

我要回帖

更多关于 android6.0 内核 编译 的文章

 

随机推荐