Chinaunix首页 | 论坛 | 博客
  • 博客访问: 511380
  • 博文数量: 110
  • 博客积分: 3971
  • 博客等级: 中校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-20 23:27
文章分类

全部博文(110)

文章存档

2015年(2)

2014年(1)

2013年(1)

2011年(9)

2010年(28)

2009年(12)

2008年(13)

2007年(23)

2006年(21)

我的朋友

分类: LINUX

2010-01-06 14:29:24

一、为什么使用OpenEmbedded

1.         OpenEmbedded,简称OE,它用来构建和管理嵌入式开发系统(交叉编译、安装、打包)

2.       它可以解决以下问题:

1)       指定编译工具链

2)       程序和库之间的依赖关系

3)       创建镜像

4)       建立目标板上的安装包

5)       建立本地安装包

3.       分为两部分.

    2004年10月7日Chris Larson把OE分成了两个项目。一个是bitbake(构建任务的执行者),一个是openembedded(实际上是为bitbake提供元数据)。

1)       bitbake构建任务的执行者,它是一组工具集,通过读取扩展名为.bb的文件设置来进行工具,之后简称bb

2)       openembedded元数据,从网上下载得到,这后简称oe

二、如何得到OE

1.          安装依赖包
$ apt-get install patch cvs texlive texlive-extra-utils git git-core libgmp3-dev libmpfr-dev dpkg-dev liborbit2-dev libnotify-dev comerr-dev

sudo apt-get install subversion build-essential help2man diffstat texi2html texinfo cvs gawk zip unzip \
cogito bzip2 libncurses5-dev zlib1g-dev libssl-dev libgtk2.0-dev ca-certificates python-pysqlite2 \
sqlite3 sqlite3-doc python-pysqlite2-dbg quilt python-psyco ccache gcc-3.4 g++ libsdl1.2-dev lynx \
git-core libxtst-dev

Pysvn

To build pysvn you will require:

  • 2.2 or later with these options:
    • Python runtime package
    • Python development package
    • Python pyexpat package
  • 1.2.x, 1.3.x 1.4.x or 1.5.x with these options:
    • Subversion client package
    • Subversion development package
  • to build against Python 2 which is included in the pysvn source kit.
  • to build against Python 3 which is included in the pysvn source kit.

Some distributions will split python and subversion into more the one package.

You will need to find all the packages that give you the options listed above.

Building on unix and Mac OS X systems.

  1. Install subversion.
    When installing from packages you will need to install the devel packages as well. For example on Fedora/Redhat subversion-devel, apr-devel, apr-util-devel and their dependancies.
  2. Get the pysvn source code
  3. For Python 2 builds: tar xzf pycxx-5.5.0.tar.gz into extdir/Import if not using a source kit
  4. For Python 3 builds: tar xzf pycxx-6.0.0.tar.gz into extdir/Import if not using a source kit
  5. cd Source
  6. For Python 2 builds: backport the PySVN code using python setup.py backport
  7. Create the Makefile using python setup.py configure
  8. make
  9. cd Tests
  10. Test pysvn by running make

Install pysvn by copying the following from Extension/Source to python site-specific directory.

  • mkdir python-libdir/site-packages/pysvn
  • cp pysvn/__init__.py python-libdir/site-packages/pysvn
  • cp pysvn/_pysvn*.so python-libdir/site-packages/pysvn


 

2.          安装GIT

Git的最新版本可以在下载,安装之前首先确保相应的依赖包已经安装,主要有以下几个:
zlib
libcurl
libcrypto(OpenSSL)
rsync(2.6.0 或更高版本)
这些条件满足之后,就可以对Git进行安装了:
1. tar -xzvf git-1.6.1.tar.gz
2. cd git-1.6.1
3. ./configure --prefix=/usr/local
4. make
5. make install
安装成功可以通过git --vertion 查看版本。
3.       下载OE

$ mkdir stuff

         $ cd stuff

$ git clone
  大小1G左右, 此链接速度不快,下载完成大概需要7小时左右
$ cd openembedded/
$ git pull release

OE的.dev分支(开发分支)更新速度是很快的,通常情况下几小时就会更新一次。发行版的更新也是很快的,所以最好你应该至少每天更新一次OE树。使用下面的命令更新你的oe树:
    $ git pull --rebase

4.       配置环境

$ cp conf/local.conf.sample conf/local.conf
改其中的TMPDIRDISTRO


2.3 配置
-_- 这部分官方手册还没有完成!!!

2.4 构建软件包

bitbake和OE被正确安装和配置之后,我们就可以像这样来构建软件包和镜像:

    bitbake <配方名>
 
 

编译bootstrap-image从昨天直到今天,遇到几个小问题,均逐一解决,记录如下:
1、gconf-dbus
其bb文件为:

    org.openembedded.dev/packages/gnome/gconf-dbus_svn.bb

中需要使用svn来checkout代码,最新版的gconf-dbus和OE中老版本的glib有些不兼容,所以强制指定使用某个适用版本。另外,原来的写法会让svn默认取出r1版本,太老了也是不行的。
修改了一下,解决。

    #SRC_URI = "svn://developer.imendio.com/svn/gconf-dbus;module=trunk;proto=http
    SRC_URI = "svn://developer.imendio.com/svn/gconf-dbus;module=trunk;rev=423;proto=http

另外一个问题,是install的时候,.bb文件中显式的指定要安装gconf-2.m4,但是源码中是没有的,源码的Makefile里,安装了 gconf.m4到gconf-2.m4,所以这里需要将.bb文件中显式指定安装gconf-2.m4的一句去掉。这句在函数do_stage()中, 行头加#将其注释掉即可。

    do_stage() {
            autotools_stage_all
            #install -m 0644 gconf-2.m4 ${STAGING_DATADIR}/aclocal/gconf-2.m4
    }

2、popt
其bb文件为:

    org.openembedded.dev/packages/popt/popt_1.7.bb

文件中写的源码包下载地址已经无法访问,至少在我这里无法访问,所以Google了一下找到一个镜像,修改bb文件:

    #SRC_URI = "ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/popt-${PV}.tar.gz
    SRC_URI = "http://devil-linux.linjection.org/devel/sources/1.3/popt-1.7.tar.gz

即可。

3、清除/重做指定的task
可能由于一些原因导致你在编译的一组task中的某一个出现错误,你希望修改它的.bb文件后重做它,而不希望影响到其他的task,可以这样做(我们以gconf-dbus为例)
首先指定.bb文件来clean:

    $ bitbake -b org.openembedded.dev/packages/gnome/gconf-dbus_svn.bb -c clean

再指定.bb文件来重做:

    $ bitbake -b org.openembedded.dev/packages/gnome/gconf-dbus_svn.bb

上面的命令会完全重做一个task,如果你只是想重做部分的话,可以在后面加上"-c CMD",CMD就是你希望执行的命令,比如:fetch, compile, install。假如你不确定执行结果可以先加上"-n"来模拟运行一下。

4、其他
观察编译过程,常常会从国外站点下载一些很大的包,比如kernel,perl等等,这个时候不但耗时而且可能由于网络原因中断整个编译过程。我采用的方法主要有两种
    a) ctrl+c中断(要按2~3下),然后用prozilla开多线程下载。存放到你定义的sources目录,同时删除原来OE自己下载时候建立的xxxxxx.lock文件。

    b) 修改org.openembedded.dev/packages/下对应的.bb文件,直接替换SRC_URI的值。这里需要注意的是,有些 SRC_URI是引用的org.openembedded.dev/conf/bitbake.conf中的站点定义。




阅读(5199) | 评论(0) | 转发(0) |
0

上一篇:squid.mk

下一篇:Debian安装日记

给主人留下些什么吧!~~