• webkit的编译(r76498)


    最近在xp上成功编译了webkit,查阅很多文档,发现网上的文档介绍编译方法所对应得webkit版本过于沉旧。这里介绍的源码版本是 r76498,是2011年1月24号编译的。编译过程不是复杂,只要参考http://www.webkit.org/ 其中的working code 一步一步的来。不会有太大的问题,当然还需要些补充,下面就介绍的。(也许是源码版本更新的缘故,现在的官方网址上面的编译指南还是很有效的。)


    编译前的准备工作是搭建编译环境,安装工具

    1.安装vs2005 team suite (我用的是英文版),接着是安装sp1, 然后依次安装四个补丁包,注意次序,KB918559 KB935225 KB943969 KB947315

    2.下载cygwin-downloader.zip。解压后,运行cygwin-downloader.exe,这会下载118文件到同级目录的release文件夹中,(若网速慢,需要一段时间的)还有些cygywin的安装程序setup.exe。下载完成后,运行setup.exe,选择 install from local directory,选中cygwin-downloader.exe所载目录,点击下一步安装完成。

    3.安装quicktime sdk :http://developer.apple.com/quicktime/download/要到注册个开发者账号后下载,缘由是苹果没有向大众开放自己的sdk。

    4.安装directx ,February 2010 DirectX SDK,之前没有安装结果编译不过,所以必须安装。页面渲染加速的需要。

    下面的工作是获取源码。:

    1.这里我下载的源码版本是 WebKit Nightly Builds. r76498有16M大小。解压到F:/WebKitsrc下(也可以是其他目录)。

    2.下载WebKit Support LibrariesF:WebKitsrc下(与webkit解压到同级目录)

    3.Update source tree.打开cygwin shell,进入F:/WebKitsrc/Tools/Scripts目录下(一般是挂载到/cygdrive/f/webkitsrc/Tools/Scripts目录下)运行./update-webkit脚本。

    4.运行./build-webkit -debug,编译debugwebkit库。

    以上步骤进行后,发现编译通不过,此时打开F:/WebKitsrc/Source/WebKit/win/WebKit.vcproj,修改其中每个工程的属性,将c/c++编译选项中的,设置”Treat Warnings As Errors”为”No”。听说这是由quicktime sdk头文件编码问题。此步完成后,在执行第4步即可。

    编译成功后,生成的核心文件有WebKit.dll,JavaScriptCore.dll,QTMovieWin.dll,InjectedBundle.dll,WebKit.exe,MiniBrowser.exe

    如何调试所生成的webkit库呢?

    此时我们双击运行MiniBrowser.exe,会提醒说缺少CFNetwork.dll等。

    我 们下载的是苹果的webkit版本,运行需要依赖于mac平台的一些库和其他一些开源库,如 AVFoundationCF.dll,CFNetwork.dll,CoreAudioToolbox.dll,Foundation.dll,objc.dll,SQLite3.dll,zlib1.dll 等。

    所 以我们需要下载win32版safari,安装完毕后,将C:/Program Files/Common Files/Apple/Apple Application Support下的所有dll文件除了WebKit.dll和JavaScriptCore.dll(这要用到我们自己编译好的库),到 F:/WebKitsrc/WebKitBuild/Debug/bin目录下。此时MiniBrowser.exe就可以运行了,我们就可以 MiniBrowser.exe为宿主程序调试webkit.dll和JavaScriptCore.dll了,了解页面的DOM树生成,排版和渲染的过 程了。当然先要掌握具体的HTML/CSS规范。

    忘了说明,还需设置以下环境变量:

    WEBKITLIBRARIESDIR=F:/webkitsrc/WebKit/Libraries/win这个目录是前面所提到的WebKit Support Libraries自动被解压所生成的目录。WEBKITOUTPUTDIR=F:/webkitsrc/WebKitBuild这个是编译的输出目录。

    我们是用cyngwin的bash脚本,这些脚本会为每个参与编译的工程,生成一个中间的bat文件,然后调用cmd.exe,运行这个bat文件,其中调用的vs2005编译器。从工程的buildlog中,可以看到这些行为。

    后记:

    后来单独更新了WebKitSupportLibrary.zip,wekit编译成功但执行./run-safari --debug时,得到了如下结果:

    “you copy of safari is missing important software resouces please install safari”
    “无法定位程序输入点****与动态链接库*****(如icuuc40.dll)上”

    仔细看了WebKitSupportLibrary.zip 中的内容都是这些关键库的头文件和lib,这说明了这些库与safari安装目录下的apple Application support库不兼容
    (“C:/Program Files/Common Files/Apple/Apple Application Support”),不是太新了,就是太老了。
    回复到之前成功编译时用的WebKitSupportLibrary.zip。重新编译safari就成功被启动了。
    这说明大家编译成功后,应该保存当时的编译包等数据。safari更新并不能与WebKitSupportLibrary.zip保持一致。
    除此之外估计全用最新的包也可能会避免这类问题。



  • 相关阅读:
    CoffeeScript介绍
    在ubuntu下安装rails
    NodeJS扫盲班
    sguID056681
    UVA11865 Stream My Contest(最小树形图)
    POJ1469COURSES(二分图最大匹配)
    UVA1494 Qin Shi Huang's National Road System(最小生成树)
    UVA11478 Halum(差分约束系统)
    二分图最大匹配总结
    POJ1466Girls and Boys(二分图最大独立集)
  • 原文地址:https://www.cnblogs.com/lexus/p/2226042.html
Copyright © 2020-2023  润新知