webkit真正可以编译的过程

本文档详细记录了在Windows 7 32位系统上编译WebKit的全过程,包括安装Visual Studio 2005、Cygwin、QuickTime SDK、DirectX SDK,设置环境变量,以及编译和解决编译过程中遇到的问题。最后成功运行MiniBrowser.exe并访问百度网站,标志着编译完成。

1、工具的安装

编译webKit

Webkit已然成为当前最炙手可热的开源浏览器内核,从手机到电脑很常见的浏览器都是基于webkit内核的,研究webkit对于一个程序员来说是件很让人振奋的事儿,然后要研究这个开源的瑰宝,首先就需要编译它,经过将近一个星期的研究,历经我也不知道有多少次的失败终于终于我还是编译成功了。下面我将我这次的编译的详细过程记录下来,在我看来是对网上的早期编译文档的一次版本更新吧

编译环境的搭建

建议搭建基本环境到webkit官网浏览英文介绍http://www.webkit.org/building/tools.html以及下载编译所需要的所有文件,我在我机器上的测试环境为:

Window7 32位旗舰版操作系统,4G内存(编译最大达到内存占用2.5G),处理器Inter(R)Core(TM) i3 CPU M370 @2.4GHz,编译版本为:WebKit-r132317,下面是环境搭建详细,建议安装全部选中默认路径以免编译错误。

1.      安装VS 2005 team suite英文试用版下载地址如下:

http://download.microsoft.com/download/6/f/5/6f5f7a01-50bb-422d-8742-c099c8896969/En_vs_2005_vsts_180_Trial.img;

2.      安装Microsoft Visual Studio 2005 Team SuiteService Pack 1,下载地址如下:

http://www.microsoft.com/downloads/en/details.aspx?familyid=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc&displaylang=en

3.    如果是win7的系统需要安装VisualStudio 2005 Service Pack 1 ATL Security Update

4.      安装一下的四个补丁:

a)     KB918559

b)    KB935225

c)     KB943969

d)    KB947315

5.      安装cygwin 利用官网专门提供的一个下载工具cygwin-downloader.zip.运行cygwin-downloader.exe会自动下载并在压缩包中生成一个release文件夹,下载完成后会自动启动安装程序setup.exe执行安装,然后选择本地文件也就是release文件夹,建议安装到D:\cygwin避免编译产生无可预知错误,选择文件夹的时候默认为全部default我建议更改为install

6.      http://developer.apple.com/quicktime/download/下载一个quicktime sdk,需要注册才能下载,必须安装。

7.      安装DirectX SDK下载February 2010DirectX SDK(新版本不支持vs2005)

     quicktime sdk 和VC2005同时需要安装到C盘目录,

       如果两个都安装到D盘目录了,可以通过修改webkitdirs.pm文件来解决,修改sub setupCygwinEnv()这个函数中如下语句:

       my $programFilesPath = $ENV{'PROGRAMFILES(X86)'} || $ENV{'PROGRAMFILES'} || "C:\\Program Files";

为你自己安装VC2005的目录

       my $programFilesPath = "D:\\Program Files"; 

获取源码

1.       对于源码的获取可以直接下载在http://nightly.webkit.org/ 第三个下载项“Source”。20M左右。

2.       下载一个补丁包,WebKitSupport Libraries这个压缩包包含了Apple的几个非开源库的Windows port。下完后放在Webkit源码解压后的根目录:~/WebKit-r132317/(注意这个补丁包不要解压)

设置环境变量

1.       设置cygwin的环境变量,在path中添加D:\cygwin\bin;,否则编译时会报

touch 不是可用的命令,编译会失败。如下图所示:

2.       新建环境变量WEBKITLIBRARIESDIR其值为WebKit源代码目录\WebKitLibraries\win

3.       新建环境变量WEBKITOUTPUTDIR其值设为你打算要存放objdll的输出文件夹,当然这个文件夹所在的分区至少要有4G的剩余空间。

4.       说明:WEBKITOUTPUTDIR可以随便设,如果要保持和其他Build方式的一致性,那么就设置成为%WEBKIT_DIR%\output,这里%WEBKIT_DIR%Webkit文件夹的绝对路径。WEBKITLIBRARIESDIR必须设置为%WEBKIT_DIR%\Web`KitLibraries\win文件夹。

比如将WEBKIT_DIR设置为E:\project\WebKi t-r132317

WEBKITOUTPUTDIR则可以设置为%WEBKIT_DIR%\output

WEBKITLIBRARIESDIR则可以设置为%WEBKIT_DIR%\WebKitLibraries\win

运行cygwin(我源码在D,WEBKITOUTPUTDIR为源码内新建的ouput文件夹)

1.       转到webkit源码的\Tools\Scripts目录(例如我的:cd D:/WebKit-r132317/Tools/Scripts

执行./update-webkit命令会下载WebKitAuxiliaryLibrary.zip,并安装,执行成功

2.       然后在执行./build-webkit --debug 这个过程非常重要,因为编译版本之前,webkit脚本会复制很多有用的信息到程序文件中

开始编译

1.     启动vs2005打开

D:\WebKit-r132317\Source\WebKit\win\WebKit.vcproj\WebKit.sln工程

2.     选择编译模式单纯的DebugRelease,这里我选择Debug

3.     选择DumpRenderTree,QTMovieWin, WebCore,WebKit, WinLauncher等所有项目(把c++项目的属性都设置一遍)的项目属性,左侧选择“C/C++”,将右侧的“Treat Warnings As Errors(“将警告视为错误”)设置为“No”。这个必须设置。否则编译时会报错

4.     WebKit-r132317默认的项目启动项为JavaScriptCore文件夹下的jsc工程,这回导致每次编译到此停止不前,所以又右键单击Tools文件夹下的MiniBrowserLauncher工程,选择Set as StartUp Project设为项目启动项

5.     好了,如果按照以上配置到这步就可以编译,按下F7或者点击编译图标开始编译。注意QTMovieWin编译需要QTMLClient.lib复制到对应的工程文件里面

6.     我的机器上经过大约一个小时的编译,出现一个错误:fatal error C1057: unexpected end of file in macro expansion原因是编码的问题,修改错误代码如下:

#if USE(CF)

    RetainPtr<CFStringRef>selectedCFString(AdoptCF,truncatedStringForLookupMenuItem(selectedString).createCFString());

 

   returnformatLocalizedString(WEB_UI_STRING("Look Up Dictionary", "LookUp context menu item with selected word"), selectedCFString.get());

 

#else

    returnWEB_UI_STRING("Look Up “<selection>”", "Look Up contextmenu item with selected word").replace("<selection>",truncatedStringForLookupMenuItem(selectedString));

 

#endif

#endif

7.     修改后再次编译,如果一切顺利的话最终会打开一个程序MiniBrowser.exe但是无法正常运行,因为还缺少很多的dll文件,这时候需要下载Safari浏览器并安装了,然后复制其安装目录C:/Program Files/CommonFiles/Apple/Apple Application Support下的所有dll文件到编译目录D:\WebKit-r132317\output\Debug\bin下,注意:最好不要覆盖掉QTMovieWin.dllWebKit.dllJavaScriptCore.dll这三个dll文件,然后再次编译,如果一切配置正确则编译成功运行WinLauncher.exe输入http://www.baidu.com回车即可执行,发个截图如下:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值