编译android内核,android 内核开发

如何编译android kernel

1.准备工作: (ubuntu1110 32位)

丽水网站建设公司成都创新互联公司,丽水网站设计制作,有大型网站制作公司丰富经验。已为丽水近1000家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的丽水做网站的公司定做!

ubuntu等linuxOS,下载好eclipse,安装好JDK, 安装好android的SDK, 在eclipse中成功打开android 手机模拟器即OK。

2.初始化编译环境 :

关注该网页上的“installing required packages”,其中有的软件包因为版本问题而安装不上,不用管它,之后遇到错误再单独解决。

3.下载内核源码:

android 2.3 内核 下载需要等待一段时间。

4.下载交叉编译器:

该步骤有可能耗费大量时间,依据网速不同,几个小时到几天不等,或许可以尝试git clone 后面的地址只下载prebuilt/linux-x86/toolchain

5.设置参数以及编译:

$ export ARCH=arm

$ export SUBARCH=arm

$ export CROSS_COMPILE=arm-eabi-

$ cd goldfish // 进入下载的源代码目录

$ git checkout commit_from_first_step //这个步骤我没有做,不知道干嘛用的

$ make goldfish_defconfig

$ make

6.报错信息:

若有报错说找不到 (arm-eabi-gcc command not found)等等,尝试使用 中说到的解决方案即可(即采用另外一个交叉编译器)。

7.测试:

最后,测试一下刚才编译的内核:emulator -avd myavd -kernel ~/goldfish/arch/arm/boot/zImageemulator若系统找不到,可以去android SDK中某文件夹找到,加入系统PATH即可。 -avd后面的参数 myavd即为模拟器的名字,这个我是在eclipse中的模拟器管理中新建的一个模拟器,用那个模拟器的名字即可。 -kernel后面的参数就找到刚才编译出的内核的路径。

若启动模拟器失败,可尝试关闭后再启动。第一次启动模拟器时可能需要等待比较长的时间,3分钟到15分钟不等。

在编译android内核的时候出现下面的错误,是怎么回事?

解决方案:找到工程中Makefile文件,将其中 “-m64" 字符串删除即可。

原因:gcc 3.4 或者更高版本,已经将其去除了,所以会出现上面的错误!

去android源代码网站找楼主编译android版本的对应GCC,安装后重新编译

如何预编译 Android 模拟器专用内核

Android源码编译之后生成的是ramdisk.img、system.img和userdata.img。而内核源码编译完成之后生成的是ZImage。在一般情况下Android源码是不带有内核源码的,但是带有一个镜像,这样在编译完Android源码之后就可以模拟器启动了,如果要更换系统的内核,此时将高版本的内核源码进行编译生成ZImage然后替换Android系统的的镜像。这样使用模拟器启动之后就可以查看内核是否已经被刷新。

如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核

一准备工作

1安装javasdk6

(1)从jdk官方网站下载jdk-6u29-linux-i586.bin文件。

(2)执行jdk安装文件

[html] view plaincopy

$chmod a+x jdk-6u29-linux-i586.bin

$jdk-6u29-linux-i586.bin

(3)配置jdk环境变量

[html] view plaincopy

$sudo vim /etc/profile

[html] view plaincopy

#JAVAEVIRENMENT

exportJAVA_HOME=/usr/lib/java/jdk1.6.0_29

exportJRE_HOME=$JAVA_HOME/jre

exportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

保存后退出编辑,并重启系统。

2安装依赖包

[html] view plaincopy

$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用repo工具下载源码

(1)初始化repo

[html] view plaincopy

$cd ~

$mkdir bin

$curl;~/bin/repo

$chmod a+x ~/bin/repo

$exportPATH=$PATH:~/bin(导出环境变量)

(2)下载android最新源码

[html] view plaincopy

$mkdir android

$cd android

$ repo init -u -bandroid-4.0.1_r1

...(输入用户名和邮箱名)

$repo sync -j5

...(此处用5个线程开始下载源码,下载过程及其漫长,需要耐心等待)

二 编译源码

1开始编译

[html] view plaincopy

$source build/envsetup.sh

includingdevice/samsung/maguro/vendorsetup.sh

includingdevice/samsung/tuna/vendorsetup.sh

includingdevice/ti/panda/vendorsetup.sh

includingsdk/bash_completion/adb.bash

$make-j4(此处用4个线程编译)

编译完成后,会看到类似的输出:

[html] view plaincopy

Targetramdisk:out/target/product/generic/ramdisk.img

Targetuserdatafsimage:out/target/product/generic/userdata.img

Installedfilelist:out/target/product/generic/installed-files.txt

2编译遇到的问题

编译错误:

[html] view plaincopy

命令行:0:0:错误:“_FORTIFY_SOURCE”重定义[-Werror]

built-in:0:0:附注: 这是先前定义的位置

cc1plus:所有的警告都被当作是错误

make:*** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o]错误 1

原因:

因机器上的gcc版本过高,需替换成4.4.6重新进行编译。

解决方法:

1)安装4.4版本的gcc和g++

[html] view plaincopy

$ sudo apt-get install gcc-4.4

$ sudo apt-get install g++-4.4

2)设置gcc版本,使gcc链接到gcc-4.4

[html] view plaincopy

$ 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)设置g++版本,使g++链接到g++-4.4

[html] view plaincopy

$ sudo mv g++ g++.bak

$ sudo ln -s g++-4.4 g++

4)设置完毕后,重新进行编译即可

3从模拟器启动编译后的镜像文件

1)设置环境变量:

[html] view plaincopy

export PATH=~/android/out/host/linux-x86/bin:$PATH

export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic

其中linux-x86/bin存放模拟器emulator工具,product/generic存在编译后的镜像文件。

2)启动模拟器

[html] view plaincopy

$emulator

emulator:WARNING: system partition size adjusted to match image file (162 MB 66 MB)

启动后的截图:

三 编译androidgoldfish内核

1)进入android4.0.1源码目录,下载goldfish内核源码

[html] view plaincopy

$ mkdir kernel

$ cd kernel

$ git clone

$ 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)修改Makefile

[html] view plaincopy

goldfish$ gedit Makefile

修改

[html] view plaincopy

ARCH ?=$(SUBARCH)

CROSS_COMPILE ?=

[html] view plaincopy

ARCH ?=arm

CROSS_COMPILE ?=arm-eabi-

3)导出交叉编译器目录为环境变量

$ export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin

4)编译内核

[html] view plaincopy

goldfish$ make goldfish_armv7_defconfig

goldfish$ make

编译完成后,可看到类似如下的输出:

[html] view plaincopy

OBJCOPY arch/arm/boot/zImage

Kernel: arch/arm/boot/zImage is ready

5)从模拟器中启动内核镜像

[html] view plaincopy

$emulator -kernel ~/android/kernel/goldfish/arch/arm/boot/zImage

启动模拟器后,可从Settings-System-AboutPhone中查看内核版本信息。


网站题目:编译android内核,android 内核开发
网站网址:http://scyanting.com/article/dsdcssg.html