网上下一个软碟通软通(UitraISO)工具、然后去官网上下载一个64位ubuntuiso系统文件、然后软碟通工具自己制作一个USB启动盘(非常简单)不会用软碟通的百度一下一大把!、系统最好是1040以上的版本
使用的是ubuntu官网下载的ubuntu1004 LTS 64位版本(ubuntu-10042-desktop-amd64iso)
配置软件源:
系统安装完毕以后应该首先换一个速度快的软件源
一般用的是ubunt
不然下载各种更新和软件包的时候非常的慢
安装JDK:
我要编译的是23姜饼的源代码 所以需要使用jdk6 (还需要是64位的系统)
如果是32为系统藐视jdk要安装jdk50的吧!藐视说有个doc什么的不行!所以系统一般装64的、如果是32的小伙们赶快把jdk看看
安装方法:
打开终端
输入
sudo add-apt-repository "deb "
sudo add-apt-repository "deb-src "
sudo apt-get update
sudo apt-get install sun-java6-jdk
就安装好了 (ubuntu1004 LTS版会自带那两个源)
并且不需要配置环境变量
这一步可以参考
安装各种软件包:
终端中输入
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos texinfo libsdl-dev libwxgtk26-dev
最后三个是我补充的 其他都是官方文档提供的
这一步可以参考
下载源代码:
打开终端并输入
mkdir ~/bin
PATH=~/bin:$PATH
这两句是在你的个人文件夹下创建了一个名字叫bin的文件夹 并且把其加入到了环境变量中
再输入
curl ; ~/bin/repo
chmod a+x ~/bin/repo
这两句首先在bin目录下面下载了一个repo文件 repo简单来说就说用来版本控制的 我们就是用的它来同步代码
然后建立一个用来存放源代码的文件夹 我的这个文件夹的名字是android23
输入
mkdir android23
cd android23
进入android23目录
输入
repo init -u git://androi/platform/manifestgit -b gingerbread
在此说明一下:
安卓总称:“机器人”
15系统:“纸杯蛋糕”
Android 16 Donut甜甜圈
Android 20 Eclair松饼
Android 21 Eclair松饼
Android 22 Froyo冻酸奶
Android 23 Gingerbread姜饼(以上系统都是用于手机的)官方消息说24准备出来了!至于30目前只用于平板电脑
Android 40 Ice Cream Sandwich(简称ICS,冰淇淋三明治),
表示你需要的代码是姜饼的 所以最后是gingerbread 如果是22代码 就把gingerbread改成froyo
然后你需要输入你的名字跟邮箱地址
如果提示找不到repo命令的话 需要重新设置环境变量 就是之前的PATH=~/bin:$PATH
输入
repo sync
开始同步代码 这个过程会根据你的网速来决定快慢
这一步需要下载的数据有3g那么大
可以续传 一次没下完也没关系
如果之前就已经下过一次的话 只需要把源代码目录(我的是android23)下有一个叫repo的隐藏文件夹里的projects文件夹备份出来就可以了
以后还需要同步的时候再把projects文件夹拷贝回去
ctrl+h查看隐藏文件
这一步可以参考
编译整个源代码:
cd android23
进入你的代码目录
输入
build/envsetupsh
注意和build中间有个空格
输入
lunch full-eng
make -j2
输入make就是开始编译代码了 加一个-j2参数就是开两个线程去编译 速度会快些 我花了两个小时的时间
编译完毕以后马上输入
emulator
就可以运行模拟器了 系统能跑起来就说明编译成功了
如果提示找不到emulator命令的话
需要添加环境变量
在android23目录下的out/target/product/generic文件夹下会看到systemimg
能看到的话应该算是成功了
这一步可以参考
编译SDK:
这一步在官方网站上没有说明
但是在源代码文件夹里面有文档提到了
就是在android23/sdk/docs目录下有一个叫howto_build_SDKtxt的文件介绍了如何编译SDK
原文
Then once you have all the source, simply build the SDK using: $ cd ~/my-android-git $ build/envsetupsh $ lunch sdk-eng $ make sdk
看来不需要先编译整个系统再编译SDK 可以直接上来就编译SDK
按提示输入
make到时候也可以加上-j参数 比如 make -j2 sdk
但是不推荐 因为容易编译失败 而且编译SDK只需要二十多分钟到时间 不算很长
当出现
Package SDK: out/host/darwin-x86/sdk/android-sdk_eng<build-id>_mac-x86zip
的时候 就表示编译成功了 其中<build-id>默认是系统的用户名
howto_build_SDKtxt中还提到了编译ADT插件
我发现自己编译到ADT插件竟然认不到platform 自己编译出来到SDK也一样
原因不明
只要使用官方的SDK和ADT就没有问题了
具体就是把自己编译出来platform拷贝到官方SDK里到platforms文件夹下 搞过Android开发都懂的
最后:
非常简单的一步
就是直接修改源代码然后编译SDK就可以得到自己的SDK了
我就示范一个简单的例子 抛砖引玉
首先我找到TextView的代码
在frameworks/base/core/java/android/widget 如图
我在updateTextColors方法的开头添加了一句Systemoutprintln
打印了一句话"Source Code Changed"
updateTextColors方法会在TextView的setTextColor方法中被调用
好 保存
编译
然后使用这个platform
新建一个项目
调用一下TextView的setTextColor方法看看有什么效果
一个很简单的例子
看看
Source Code Changed被打出来了
SDK修改成功
编译linux内核步骤:
1、安装内核
如果内核已经安装(/usr/src/目录有linux子目录),跳过。如果没有安装,在光驱中放入linux安装光盘,找到kernel-source-2xxxxrpm文件(xx代表数字,表示内核的版本号),比如RedHat linux的RPMS目录是/RedHat/RPMS/目录,然后使用命令rpm -ivh kernel-source-2xxxxrpm安装内核。如果没有安装盘,可以去各linux厂家站点或者>
1、gcc (C编译器)
安装 apt-get install gcc
2、make (源代码维护工具,它能自动检测出需要重新编译的源文件并根据你设定的编译规则去重新编译程序)
安装 apt-get install make
3kernel-source (内核源码包。你可以apt-cache search kernel-source搜索到内核源代码包,并用uname -r命令查看到当前系统内核版本,然后用apt-get install kernel-source-xxxx来安装和你内核版本一致的内核源代码包)
如果你不想重新编译内核,内核源代码包kernel-source是完全可以不下载的。
4kernel-headers(内核源代码头文件包,不管你是要进行内核模块开发还是进行驱动程序开发,这个包都是必须 要安装的。因为作为一个内核模块编写者,通常会调用内核里的一些东西,比如内核头文件,内核数据结构申明等。它里面包含了一些关键的内核头文件)
安装 apt-cache search kernel-headers
uname -r
apt-get instakk kernel-headers-xxxx
5kernel-kbuild(用来编译内核模块的,下载安装这个包后会发现在/usr/src目录下多了一个kernel-kbuild-xxxx开头的目录,下面只有scripts一个目录,这是用来编译内核模块的一些脚本程序)
安装 apt-cache search kernel-kbuild
uname -r
apt-get install kernel-kbuild-xxxx
6build-essential(包含一个在建立deb包过程中起关键作用的包的信息列表,如果你不想建立deb包你就不需要安装此表)
安装 apt-get install build-essential
7kernel-package(如果你想把内核镜像做成一个deb包来用,那么必须用安装这个包了)
安装 apt-get install kernel-package
8initrd-tools(如果你想制作启动过程的initrd镜像,则这个包是必不可少的)
安装 apt-get instakk initrd-tools
假设你编写了一个内核模块程序,源代码如下:
/ helloc /
#include <linux/inith>
#include <linux/moduleh>
#include <linux/kernelh>
static int hello_init(void)
{
printk(KERN_ALERT "Hello, linux kernel module
");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, I've created a linux kernel module sucessfully
");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
你需要这此源程序编写一个makefile,内容如下:
#Makefile for helloc file
#
KERNEL_DIR:=/usr/src/linux
obj-m:=helloo
default:
$(MAKE) -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules
clean:
$(RM) cmd modc o ko -r tmp
注意:这里的KERNEL_DIR是指内核源代码头文件所在目录的上一级目录,通常就是指内核源代码目录。该目录一般包括有arch,drivers,fs,include,init,ipc,kernel,lib,mm,net,scripts,usr,sound,security等目录。
在本示例中,/usr/src/linux是一个链接,指向了/usr/src/kernel-headers-268-3目录。
编写好makefile后就可以输入make命令生成helloko内核模块了,然后你可以用:
insmode helloko
命令来加入内核模块,然后用:
rmmod hello
来删除内核模块。
以上就是关于怎么在Ubuntu编译Android2.3源代码以及制作自己的SDK全部的内容,包括:怎么在Ubuntu编译Android2.3源代码以及制作自己的SDK、Linux内核源码如何编译Ubuntu源代码在哪里呢、在Ubuntu上做内核编程,要安装哪个包怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)