kbs综艺大赏:Windows平台下用vs2005编译webkit

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 05:35:41

                    Windows平台下用vs2005编译webkit

 

Webkit作为近来风起云涌的webbrowser界最红最火的开源浏览器引擎,大凡业内人士,都不缺乏将它拿起来剖析一番的理由。然而,若然没有必胜的信念和愚公移山般的毅力(小小夸张一下,嘿嘿),恐怕会倒在第一步(Build Webkit)就起不来了。作为Webkit架构设计优秀的表征,Webkit有众多port,每个port,又都有其编译环境和脚本,要深入其中弄清楚 哪一个port,都不是简单的事情。考虑到vs2005作为c++开 发的王道ide,能在vs2005下阅读和调试Webkit代码,无疑是最好的选择;但是很不幸,这也是比起其他port(例如Qt的linux port)编译环境设置更为复杂的一种方式,很多同学舍难取易,选择了Qt Linux Port,本来也未尝不可;但是GDB在调试Webkit的时候的速度之慢,已经到了令人发指的程度,要在这样的环境下理解Webkit,可是大大的不易 了。废话不多说,下面就是在windows下使用vs2005编译webkit的过程(Using Apple’s Windows Port)。

 

一、搭建编译环境

1.1、首先,您得有个vs2005 team版,虽然Express版也可以,但是都到Build Webkit这份上了,您还是整个Team版吧;

1.2、其次,装上Microsoft Visual Studio 2005 Team Suite Service Pack 1

1.3、最后装上四个补丁,vs2005就算准备妥当了:(注意安装顺序)
KB918559
KB935225
KB943969
KB947315

1.4、安装交叉编译工具cygwin

       Webkit官网提供了一个cygwin-downloader.zip供下载,解压以后,文件夹里面有一个cygwin-downloader.exe,点击运行它会自动下载101个软件包;下载完成后,点击Cygwin的安 装程序选择从本地文件夹安装,把刚才下载的101个软件都装上即可。这个里面的问题是下载需要半天,而且有可能出错。 本人在安装后就痛苦的发现用不了,然后比对着把所有软件包自己手动下载安装了一遍,如果您遭遇与在下相同的不幸,推荐手动安装Cygwin的时候使用台湾的服务器,速度飚快。

另附需要安装的软件列表:["apache", "bc", "bison","curl", "diffutils", "e2fsprogs","emacs", "flex", "gcc", "gperf","keychain", "make", "nano", "openssh","patch", "perl", "perl-libwin32","python", "rebase", "rsync", "ruby","subversion", "unzip", "vim", "zip"]

    安装好后,把cygwin的bin目录添加到path环境变量中

1.5 安装QuickTimeSDK

地址为http://developer.apple.com/quicktime/download/下载一个quicktime sdk,需要注册才能下载,耐心注册就是,下载安装没什么说的;不过,这个sdk还是很多人build失败的万恶之源,这个后面再说。

安装后把SDK中的Cincludes和Libraries目录包含到VS2005的工程配置中去,如下图

1.6、安装DirectX SDK

     下载February2010 DirectX SDK, 这里引用官网上的一段话  

Download the February2010 DirectX SDK (newer versions do not support Visual Studio 2005). Thisis needed for accelerated compositing

二、   获取webkit源码

2.1、下载webkit源码码(我当时下载的版本是WebKit-r103689)

这一步甚为关键,您要是比着官网的导引,到这一步就该下载http://nightly.webkit.org/files/WebKit-SVN-source.tar.bz2了, 这玩意有两三百M大,Webkit官网到咱大陆局域网的速度又极慢,因此这一失足通常能浪费半天到一天的时间,您要是日理万机类型的人物,恐怕 Webkit之旅就到此为止了。实际上完全没有必要下载svn的压缩包(在这里不得不赞同linus,svn真是shit,大家有空还是多琢磨琢磨Git吧,WebKit最近已经开始使用Git了),下载一个导出的纯代码的tarball就行了,这个网页http://nightly.webkit.org/第三个下载项。一般只有10M大小,刷刷的就下完了

2.2、设置环境变量

      首先在webkit跟目录下新建一个文件夹WebKitBuild,用于存放编译生成的文件

      设置webkit环境变量:(我解压源码放在E:\WebKit-r103689目录下)

     WebKitLibrariesDir=E:\WebKit-r103689\WebKitLibraries\Win

      WebKitOutputDir= E:\WebKit-r103689\WebKitBuild

      设置cygwin环境变量:

      打开cygwin,运行

      export WEBKITLIBRARIESDIR=E:/WebKit-r103689/WebKitLibraries/Win

export WEBKITOUTPUTDIR= E:/WebKit-r103689/WebKitBuild

2.3、下载编译补丁包WebKitSupport Libraries

在Windows下编译需要下载一个补丁包,WebKitSupport Libraries。这个压缩包包含了Apple的几个非开源库的Windowsport。下完后放在Webkit源码解压后的根目录(注意这个补丁包不要解压,build的时候脚本会自己搞定的)

2.4、打开cygwin,运行E:/WebKit-r103689/Tools/Scripts/update-webkit

在webkit源码的Tools/Scripts有一个shell脚本update-webkit,是个更新脚本,不运行这个编译的时候是肯定要出错的。

这个脚本做两件事情:首先执行svnupdate,因为咱没有在下svn的tarball,所以就直接跳过;其次,下载一个压缩包,这个压缩包里面包含的是webkit所依赖开源库的源代 码,Size不大,更新过程是很快的,所以大胆的运行吧,运行完这个源码就算准备好了。

注意:如果您机器上安装过Qt,那么检查一下环境变量里面是不是有QTDIR,如有,删了先;如果有这个环境变量,Webkit的build脚本会认为要编译Qt的port,我当时因为这个问题郁闷了很久。

 

 

三、编译webkit

3.1、E:/WebKit-r103689/Tools/Scripts/build-webkit –debug

     这是预编译,运行这个shell脚本,会自动生成很多文件,如果发现有很多错误,先不要管,接着往下操作,保证编译完成

 

 

3.2、用vs2005打开webkit工程

用vs2005打开E:\WebKit-r103689WebKit\win\WebKit.vcproj\WebKit.sln, 选择正确的Configuration,也就是Debug和Release,为啥要说这个呢,因为Webkit在Windows下不止一个port,也就 不止一个Debug和一个Release,这里我们要选的就是单纯的Debug和Release,其他的Build配置就忽略吧。

   去掉工程编译之间的关联,保证单个工程可以编译通过,编译顺序如下:

  

JavaScriptCoreGenerated

WTF

JavaScriptCore

WebCoreGenerated

QTMovieWin

Interfaces

WebKitGUID

WebKit

Testapi

Jsc

WinLauncher

TestNetscapeplugin

ImageDiff

DumpRenderTree

 

四、运行webkit

4.1、将WebKit工程设置为启动工程,设置工程commond属性如下,

    

然后就可以运行了。

 

五、常见错误

 5.1、

错误定位于

将乱码部分改成字符串即可。

 

5.2、version格式错误

     改成如下,暂先写死

 

5.3、

Visual Studio 2005 ?

Early versions of Visual Studio 2005 are  missing the library 'Crypt32.lib'. A workaround is to download and install the  Windows Server 2003 R2 Platform SDK then copy the file 'Crypt32.lib' from the directory C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib to %VSINSTALLDIR%\VC\PlatformSDK\Lib.

 

 

 

 

参考资料:

 

         

 

 http://trac.webkit.org/wiki/BuildingOnWindows  这上面有常见的错误分析

·  http://webkit.org/building/tools.html官方的编译环境搭建

·  http://webkit.org/building/checkout.html

·  http://webkit.org/building/build.html   编译

·  http://webkit.org/building/run.html     运行

·  https://trac.webkit.org/wiki/QtWebKitHacking