Chinaunix首页 | 论坛 | 博客
  • 博客访问: 937129
  • 博文数量: 60
  • 博客积分: 10055
  • 博客等级: 上将
  • 技术积分: 2106
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-03 22:46
文章分类

全部博文(60)

文章存档

2009年(5)

2008年(55)

我的朋友

分类: LINUX

2008-05-17 00:39:40

1、安装此页面上列出的一些必要的软件包
apt-get install python patch m4 make ccache perl diffstat build-essential wget curl ftp cvs subversion git-core tar bzip2 gzip unzip openjade docbook  docbook-utils texinfo texi2html sed bison libc6-dev mktemp sgmltools-lite libpcre++-dev libpcre++0 libpcre3 libpcre3-dev help2man gawk
如果想要编译qemu-native的话,还要安装libsdl1.2-dev
如果要编译Zaurus 2.4 或者任何  collie kernels 的话,还要apt-get install bc
备注:[bc (binary calculator)]
===
安装过程中,我的debian etch上出现libc6_2.7-10_amd64.deb什么xxxxxx的问题,我单独强制安装了这个包dpkg -i --force-overwrite libc6_2.7-10_amd64.deb,因为我用的是testing的源,估计是由于跨版本安装的原因引起的。
===
perl还老提示perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "en_US.UTF-8"
我export LC_ALL=POSIX解决问题。
====
2、确立好一个工作目录,作为编译openmoko的顶层目录/hpc/moko/,选择一个开发分支,用来建立openmoko,这里选择org.openembedded.dev ,因为openmoko是建立在openembedded之上的,而openembedded有多个开发分支,这里是其他的开发分支。
3.建立目录 mkdir -p /hpc/moko/build/conf
  cd /hpc/moko/
4.获取bitbake,因为下一步需要使用OE,而OE需要bitbake来建立,官方建议不要直接安装bitbake到系统目录,下载完bitbake后,将其目录添加进环境变量就可以使用他了(文章后面会讲到)。有好几种获得bitbake的方法:
    a、使用为特定linux版本准备的包
    b、下载bitbake的源码包,自己编译http://developer.berlios.de/projects/bitbake/
    c、使用subversion下载源代码树编译,cd /hpc/moko
       svn co svn://svn.berlios.de/bitbake/branches/bitbake-1.8/ bitbake
bitbake经常被修订更新,如果目前的bitbake是以前下载的,最好到查看你的bitbake版本是否是最新的。在你的bitbake目录下svn info,可以到目前你的bitbake的版本号。如果已经有了一个新的版本,那么你可以删掉当前的版本,然后svn co svn://svn.berlios.de/bitbake/branches/bitbake版本号/ bitbake的方法重新下载一份,如果不是新的版本,而是相同版本的更新,那么在bitbake目录下可以用svn update命令更新到最新。
    如果就想安装到系统目录的话,./setup.py -v install --prefix=/usr/local
或者不加--prefix=/usr/local的话,就安装到/usr/(包括/usr/bin和/usr/lib/python*.*/)目录下去了

5.下载并升级OE
   这是一份openembedded的数据库,他包含了所有openembedded的元数据:包括构建分类,配置文件,和软件包。OpenEmbedded数据库是一个monotone数据库,monotone是目前openembedded的源代码管理工具SCM,这是他的主页。
   下载一份和第四步中bitbake相同版本号的OE,进入到/hpc/moko/目录,
wget .版本号.bz2
解压bunzip2 -d OE.mtn.bz2  (确保OE版本是0.32及以上,否则可能出现一些问题)
  mtn --db=/hpc/moko/OE.mtn pull monotone.openembedded.org  org.openembedded.dev
  chechout本地的openembedded源代码树
   #cd /hpc/moko/
   #mtn --db=/hpc/moko/OE.mtn checkout --branch=org.openembedded.dev
6、建立本地配置文件

   cd /hpc/moko

   cp org.openembedded.dev/conf/local.conf.sample  build/conf/local.conf

编辑build/conf/local.conf,因为之前我们使用的是.dev分支,所以至少得添加如下内容
BBFILES = "/hpc/moko/org.openembedded.dev/packages/*/*.bb"

DISTRO = "openmoko" 

MACHINE = "om-gta01" 

(有时候会提示要TARGET_ARCH = "",我在neo上uname -m的结果是armv4tl,这里可以填这个,也可以填"arm")

因为我们是以local.conf.sample为基础修改,所以还要删掉最后一行。

DISTRO和MACHINE究竟应该设置为哪些值呢,在org.openembedded.dev/conf目录下有DISTRO和MACHINE目录,进去一看便知道了。

7、设置环境变量,可以把一下的内容添加到/etc/profile,也可以是~/.bashrc(推荐用这个)

====如果你安装我之前说的,没有实际的安装bitbake,那么使用以下语句

  #export PATH=/hpc/moko/bitbake/bin:$PATH

 #export BBPATH=/hpc/moko/build:/hpc/moko/org.openembedded.dev

====如果你已经使用setup.py install安装的bitbake,那么,export BBPATH=/hpc/moko/build/:/hpc/moko/org.openembedded.dev

8,开始编译

编译单个软件包: #bitbake nano  (编译nano这个编辑器软件)

编译一个软件套件:#bitbake task-base

编译一组软件包,并把他们部署进rootfs镜像

------a、编译gpe镜像:bitbake gpe-image

------b、编译opie镜像: bitbake opie-image

(分别编译每个镜像大概需要4g空间)

在/hpc/moko/org.openembedded.dev/packages/meta/目录可以找到meta/task和目标镜像。

编译所有的软件包: bitbake world (大概需要35g的编译空间)

绕过冗长的语法,编译单个软件包: #bitbake -b /hpc/moko/org.openembedded.dev/packages/blah/blah.bb

这里是bitbake后面可以跟的一些参数,可以自定义用bitbake编译什么。

其参数的含义如下:

helloworld

编译一个静态可执行文件,此文件的作用是无限的打印出hello world

world

编译所有的东西,这会消耗掉大量的时间,带宽,磁盘空间 ,甚至损坏交叉编译工具链

task-base

编译内核和一些必须的核心包,你甚至还需要自己安装ssh,因为他很可能没有安装

helloworld-image

编译一个镜像,用作rootfs,并产生一个无限打印出hello world的循环程序,这可以用来测试linux是否已经被引导进入用户空间

bootstrap-image

编译一个包含task-base包的镜像

opie-image

编译一个基于opie的镜像

opie-kdepim-image

编译一个基于opie并且包含kde-based pim所有特性的镜像

meta-opie

编译所有与opie有关的包,和一些opie需要使用的包

pivotboot-image

 

Build image that is necessary to flash a Sharp SL C3000, Zaurus. It pivots after booting from the NAND and finalizes the install to the HD during the first boot.

task-dvb

dvb程序的所有元数据包(DVB = Digital Video Broadcasting).

task-python-everything

关于python的所有东西

twin-image

包含task-base和一对编辑器nano和vim,以及一个邮件阅读器mutt 

uml-image

编译用户模式linux下的root镜像,包括task-base,和opie的一部分。

gpe-image

基于gpe的内核和rootfs

meta-gpe

与gpe-image一起发行的基本软件包

package-index

Target to update the "feed" files (Package*) to reflect the current set of .ipk's that exist in the deploy directory. Commonly used after building some packages individually to update the feed and allow them to be installed via a package manager or thie ipkg command line tools.

virtual/kernel

编译适合你设备的内核

============================
阅读(3086) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~