随笔之XP下编译Webkit
终于下载并编译完成Webkit了。我是在32位XP下做的。下面是手顺
=======================
1 前期工作
》1 安装VStudio 2005,我的是中文专业版,记住安装的时候尽量只安装Visual C++,否则后面会痛苦至死。
》2 安装SP1包,VS80sp1-KB926604-X86-CHS.exe。这个比装VS时间还要长。如果第1步选择全部安装的话,这一步需要花费2-3个小时。如果第一步只装VC的话
这一步大概就20分钟
》3 安装VS补丁,否则VS容易死掉。VS80sp1-KB947315-X86-CHS.exe。如果不装该补丁的话,就得禁止intellisense功能,就是删除
C:\Program Files\Microsoft Visual Studio 8\VC\vcpackages\feacp.dll库,这个库就是intellisense。或者改名吧。
》4 安装quicktimeSDK。从网上找,在Apple官网上下载,注意不要修改默认安装路径。
》5 安装DirectxSDK。从MS官方网上找。不过现在好像要检查你的系统是不是正版。网上也有破解方法。
》6 安装safari win32浏览器。
========================
2 下载源码
》1 下载源码tar包,1.8个G,http://nightly.webkit.org/files/WebKit-SVN-source.tar.bz2 不要用迅雷下,那样会有问题。我直接用浏览器下的。
》2 下载Webkit封装好的cygwin包,http://svn.webkit.org/repository/webkit/trunk/Tools/CygwinDownloader/cygwin-downloader.zip 然后运行其中的cygwin-downloader.exe
=========================
3 编译源码
》1 用VS打开源码目录/Source/WebKit/win/WebKit.vcproj/WebKit.sln。一共30个项目。
》2 修改每个项目的debug配置/C++选项/常规/将警告视为错误 设为否
》3 用文本编辑器打开webkit源码目录\WebKitLibraries\win\tools\vsprops\common.vsprops文件,将其中的/SAFESH替换成/SAFESEH:NO。这个和链接以及安全有关。注意,和VCProject的链接,编译等属性全从这个文件夹中的vsprops继承的,如果有需要的话,可以在这里改属性。在VS中是改不了的
》4 cygwin安装完后会提供一个terminal,进入webkit的源码目录,首先执行Tools/Script/Update-WebKit脚本。然后执行Tools/Script/Update-WebKit-Support-libs脚
本。这两个脚本要下载一些依赖文件到源码目录。注意必须在源码根目录下执行。因为编译要求所下载的依赖文件放在根目录下。
》5 添加一个系统环境变量,DXSDK_DIR 值为C:\DXSDK。为PATH变量添加cygwin的bin目录
》6 执行Tools/Script/build-webkit --debug,这个脚本将编译debug版的webkit
》7 编译完的产物在webkit源码目录/WebKitBuild\Debug下。包括lib.dll.exe等
》8 编译时候可能报错,例如winnt.h报错,可上网查询。主要原因是依赖头文件的位置顺序不对(DirectSDK include位置不对),但是又不太好改,错误如下:
VS2005\VC\PlatformSDK\include\winnt.h(222) : error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)。解决办法直接修改winnt.h,在出错的地方添加下面
这行
#define POINTER_64 __ptr64
》9 然后就编译,大概就2K多个文件,速度比较快。
》10 编译过程中,可能报找不到d3d9.lib,那么就把directxSDK/Lib目录中的文件都拷贝到webkit源码目录\WebKitBuild\Debug\lib
============================
4 运行测试
》1 运行WebKitBuild\Debug\bin\MiniBrowser.exe,可能会报缺CFNetwork.dll等库,这时需要把safari安装的C:\Program Files\Common Files\Apple\Apple Application
Support下的DLL全部拷贝到webkit源码目录\WebKitBuild\Debug/bin下,注意有些库不要覆盖了。如果问你是否覆盖,选择否即可。
》2 也可以在VS中调试Tools/minBrowser
==========================
至此,Webkit编译就算告一段落了。编译中还有些文件有点问题。需要手动改改,这些都比较简单了。
相关资料见:
http://www.webkit.org/building/build.html
谢谢大家对《深入理解android 卷I/卷II》的支持。