现在的位置: 首页 > 综合 > 正文

Visual Studio 2005下编译webkit

2012年08月31日 ⁄ 综合 ⁄ 共 3782字 ⁄ 字号 评论关闭

最近开始学习webkit,第一步就是要编译webkit源码,经过一个元旦假期的努力,外加上网上各位大牛的bolg教程。今天成功编译了webkit,特地上来和大家分享下。

先说下环境:本人的系统是WIN 7 32bit,使用的是Visual Studio 2005英文版,2G内存

First step:

在你的电脑上安装Visual Studio 2005英文版(最好是team suite版),在此特别说明,请尽量使用英文版的编译器,这样可以为你日后打package省下不少事。

有几个必须要安装的补丁,首先是Microsoft® Visual Studio® 2005 Team Suite Service Pack 1如果你使用的是vista以上版本的系统的话,这个是不适用的,你可以在安装完Visual
Studio 2005后,选择windows update,系统会自动帮你升级到sp1。

接下来是安装四个补丁:

KB918559

KB935225

KB943969

KB947315

这四个补丁全部选择英文版,其中KB918559KB935225只用英文版,如果你用的是中文版的VS2005,是无法安装的。

至此,你的编译器基本上设置好了。


Second step:

你需要在在windows平台上运行Unix模拟环境,在webkit的官网上提供了cygwin下载。

在官网上下载一个cygwin-downloader.zip,随便解压在哪个盘都可以。

然后运行cygwin-downloader.exe,目前,它会下载159个软件以及setup安装程序。

其中一部分是我们要用的,给出需要安装的软件列表:"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"

下载的软件放在解压目录下的release下,请逐一检查上述软件是否已经下载下来了,如果有缺失,则需要运行setup程序从网上下载。

当下载完成后,运行setup程序,、将上述软件进行安装,推荐使用默认目录安装,可以省去不少麻烦,如果你对环境设置非常熟练,那就随意了。

接下来,你还需要安装两个SDK,quicktime SDKDirectX
SDK
。其中quicktime SDK需要注册一个apple developer的ID。


Third step:

到这里,我们可以去下载一份近期的webkit的源码了。http://nightly.webkit.org/builds/trunk/src/1

推荐只把源码下载下来,如果你使用svn进行下载的话,估计需要花费几个小时的时间。

将源码解压后,文件夹命名为WebKit,放在(C:\cygwin\home\<username>\)下。

在windows下编译webkit仍需要一些支持,下载WebKit Support Library,无需解压,脚本会帮我们搞定。

放在(C:\cygwin\home\<username>\WebKit)下。


接下来,打开Cygwin Terminal,执行"WebKit/Tools/Scripts/update-webkit"

cygwin会为webkit下载WebKitAuxiliaryLibrary.zip支持补丁,当然这个补丁在apple的官网上也是有的。


按理说,接下来该执行build-webkit了,但是,我可以很明确的告诉你,这次build肯定是失败的。

我们还需要设置一些环境变量:

WEBKIT_DIR = %WEBKIT_DIR%

WEBKITOUTPUTDIR = %WEBKIT_DIR%\WebKitBuild

WEBKITLIBRARIESDIR = %WEBKIT_DIR%\WebKitLibraries\win

其中%WEBKIT_DIR%为你放置webkit源码的绝对路径,e.g:本人的是C:\cygwin\home\Snny\WebKit\WebKitLibraries\win

设置好之后,我们有两种选择,在cygwin下执行"WebKit/Tools/Scripts/build-webkit"

另一种是打开C:\cygwin\home\<username>\WebKit\Source\WebKit\win\WebKit.vcproj里面的WebKit.sln工程,跳转到VS2005下进行编译。

选择debug或者release模式编译,因为Webkit在Windows下不止一个port,也就不止一个Debug和一个Release。

由于quicktime SDK的头文件不是unicode编码,和我们的gbk不兼容。我们需要修改webkit项目里的所有C/C++子项目里的一个属性:

Treat Warnings As Errors设置为No.如果跳过这一步,很多子项目就会因为编码警告而报错,结果就是你还是要改过来在此编译。


如果上述工作你都能准确完成的话,这个时候编译一般是不会出什么大问题的。按下F7,出去泡杯茶或者做的别的事去吧。WebKit编译过程快的话,

大概一个小时左右就能完成,如果你的机器性能不好,像我一样只有2G内存的话,那就慢慢等吧,两到三个小时之后回来验收。


编译完成后,第一次可能不会全部成功,请耐心检查错误。

另外,请谨记一点,永远不要怀疑源码,出错的原因肯定是环境设置不对或者补丁未打,绝对不是源码的问题,webkit是进行dailybuild的,代码质量是有保证的。


总结下我所碰见的问题:

1.\platform\LocalizedStrings.cpp(263): error C2001: newline in constant

2.\platform\LocalizedStrings.cpp(265): error C2001: newline in constant

这两个错误出现是由于编码问题造成的。

修改方法如下:

263行改为:

returnformatLocalizedString(WEB_UI_STRING("Look Up%@","Look
Upcontext menu item with selectedword"
), selectedCFString.get());

 

265行改为:

return WEB_UI_STRING("Look Up<selection>","Look
Up contextmenu item with selectedword"
).replace("<selection>",truncatedStringForLookupMenuItem(selectedString));

 另一种方法是打开LocalizedStrings.cpp,然后以utf-8的编码方式保存覆盖源文件。


3.platform\LocalizedStrings.cpp(263): fatal error C1057: unexpected end of file in macro expansion

.解决了上述两个问题之后,就不会出现这个无法预期的文件结尾了。


 

4.Project: error PRJ0002 : Error result 1 returned from 'C:\Windows\system32\cmd.exe'.

该错误为关联错误,是由各模块之间的依赖性导致。在改正了其他模块中的错误后,该错误自动消失。

由于WebCore模块的错误引发的该错误可达到15个之多。


Last step:

编译成功后,运行C:\cygwin\home\<username>\WebKit\WebKitBuild\Debug\bin文件夹下的WinLauncher程序,报错,提示缺少dll。

没办法,下个safari吧,谁让咱们用的apple的东西呢。

将safari目录下的部分dll拷贝到bin文件夹下,在此列出需要的dll文件:

WebKitQuartzCoreAdditions.dll

CFNetwork.dll

CoreFoundation.dll

CoreGraphics.dll

icudt46.dll

icuin40.dll

icuuc40.dll

libicuin.dll

libicuuc.dll

libxml2.dll

objc.dll

pthreadVC2.dll

SQLite3.dll

zlib1.dll

注意:千万不要把webkit.dll也拷过来,万一覆盖了你生成的DLL,那么以上工作都白做了~


接下来把WebKit作为VS2005的Startup Project,

attach到正在运行的safari进程上,这样,就可以使用safari作为前端来调试webkit了。


在此,感谢ZZJ童鞋的无私帮助,你会早日找到妹子的~


参考资料:

http://www.webkit.org/building/tools.html

http://niuwa.org/?p=4

http://blog.csdn.net/zzj1881/article/details/7680938


抱歉!评论已关闭.