使用OE(OpenEmbedded)遇到的几个问题与解决[转]

使用OE(OpenEmbedded)遇到的几个问题与解决
来自 http://skywind.bokeland.com/blog/3379/12535/2008/01/03/325321

作者 skywind | 3 一月, 2008 | 阅读次数 (0)

    编译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={20061006};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中的站点定义。

你可能感兴趣的:(#openembedded)