我们在git clone git://git.webkit.org/WebKit.git中下载webkit的基于GTK的sourcecode,进行编译,希望能够有一个基础的开发环境。 另外从repo.moblin.org中可以获得webkit的相关rpm,可以下载一个src.rpm来试一试。

  有很多软件包的关联性。在moblin网站上给出的2.1 final的img中有一些的版本是不足够高的。可以通过下面两个方法解决:

  方法一、根据kickstart,从repo.moblin.org/moblin/development中获取最新的rpm制作新的img,这个推荐的方式。

  方法二、检查/etc/yum.repos.d/的相关文件,主要是moblin.repo和moblin-trunk.repo,将URL指向 repo.moblin.org/moblin/development,这样可以从yum中获取新的版本,这些欠缺的或者需要升级的包,很多时候是要安装*-devel。

  主要的问题是需要安装gst-plungins-base-devel的时候出现问题,我去查看来repo上的版本,很奇怪的:

在development中,更新时间为09.11.15,版本0.10.24-5.3
在2.1 final中,更新时间为09.10.2,版本是0.10.24-3.1,但是用rpm -q来查询,得到的版本是0.10.24-8.1。

  怀疑是在spec文件中版本号开小差写错了,但是这在yum的升级中是会碰到版本高低的差异,即使我使用-f的强制安装,会报告很多关联的软件包。这只是问题之一,更麻烦的是提示需要libgstlibva.so,而这个在rpm中没查到出自何处。网上也查不到出处。有一个地方说和GMA500有关,GMA500已经恶心了我很久,但是我的netbook中并没有使用GMA500,这不应是问题。解决方法如下:

  需要在moblin中下载这个包的src文件,进行编译,通过编译生成的rpm,在安装的时候同样出现这个问题。比较郁闷,可能需要检测spec,不过我的耐心也耗得查不多,直接在~/rpmbuild/BUILD的相关源代码中执行sudo make install。这样可以绕开版本问题,因此我推荐用最新的包制作img的方式。我原本是想在编译过程中看看这个libstlibva究竟是什么,但是编译过程中没有提示出问题,估计在spec。考虑到版本混乱问题,也是有可能的。

Webkit编译:

  使用moblin下载的src.rpm,编译一切正常,但是到了最后阶段,出现:

collect2: ld terminated with signal 9 [Killed]

  这是预哭无泪,因为已经登录很长时间,以数小时计算,为了确定这个问题有花费很常时间,这个问题是因为内存耗尽导致的,在http://techbase.kde.org/Projects/Maemo/kdepim 中如是说:

Should you get
collect2: ld termiinated with signal 9 [Killed]
Increase the amount of memory for the virtual machine, 512MB is not always enough.

一开始,我觉得不太可能,1G的内存+512M的swap,一共1.5G,怎么会不够,我用top跟踪内存,确实耗尽。晕。加物理内存不现实,因此需要在不重装机器的基础上增加swap,在网上查找,http://blog.csdn.net/chinalinuxzend/archive/2007/08/26/1759593.aspx ,处理步骤如下:

    • 制作swap文件,dd if=/dev/zero of=/home/swap.img bs=1024 count=2048000,为了保险起见,我增加了2G的swap空间,bs*count,不过最后跟踪发现增加1G就查不多,即一共2G作为的内存空间,可以编译webkit。
    • 格式为swap文件:/sbin/mkswap /home/swap.img
    • 挂摘为swap:/sbin/swapon /home/swap.img
    • 在/etc/fstab中加入相关配置,确保开机后仍作为swap去,如果只是为编译临时增加swap不需要这样处理。增加/home/swap.img swap swap defaults 0 0即可。

通过扩大swap区,可以正常将webkit编译完。查看swap的大小,可以使用free 命令。

 

相关链接:
我的无限网络文章
我的Linux操作相关文章

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐