免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6694 | 回复: 1
打印 上一主题 下一主题

基于VS2005的Webkit编译 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:48 |只看该作者 |倒序浏览
 准备工作

准备工作里面,我们需要下载webkit源码,和一些编译和调试需要用到的工具。具体如下:

a.从官网下载nightly build的源码包,不含svn目录的纯源码,大概16M

http://nightly.webkit.org/

b.下载WebKitSupportLibraries.zip

http://developer.apple.com/opensource/internet/webkit_sptlib_agree.html

c.开发工具以及编译环境:

 CygWin(使用官网提供的zip包),QuickTime SDK, DirectX SDK Feb 2010, Visual Stdio 2005 Team Suite(包含SP1的整合包)

    d.safari浏览器(调试程序运行时会需要该软件安装的部分运行环境)

    以上软件和源码都已在服务器共享。

    注意:VS2005必须安装SP1,否则编译会通不过

安装和配置编译环境

a.安装cygwin: 利用cygwin-downloader进行下载,里面以及帮你配置好了需要下载的软件包,一共119个,下载后,启动setup.exe, 从本地目录安装,即指定你的安装目录为刚下载包的那级目录;(cygwin中下载的119个包在已经上传到服务器上)

      b.安装vs2005safari

      c.安装QuickTime SDK,在编译QTMovieWin时会用到

      d.安装DirectX SDK,在编译WebCore会用到

      e.解压源码包到指定目录

1、 Visual Studio 2005 Service Pack 1 ATL Security Update.补丁是sp1系统安全相关,未安装。

2、 KB918559 无中文版,无法在中文版VS中安装(KB918559 FIX: You may experience slow performance and increased memory usage

3、 KB935225无中文版,无法在中文版VS中安装(KB935225 FIX: Visual C++ based projects take longer to compile after you install Visual Studio 2005 Service Pack 1

4、 KB943969 可以安装,已放在服务器上(FIX: Visual Studio 2005 stops responding or performance is slow when you use the IntelliSense feature

5、 KB947315可以安装,已放在服务器上(KB947315 C++ Intellisense hangs when hotfix KB943969 is installed. Since many customers are encountering this problem and KB943969 is widely used publically downloadable fix, the product group would like to fix this hang.

6、 instructions for installing the 32-bit version of Debugging Tools for Windows. 可选(Optional: Install the 32-bit version of Debugging Tools for Windows

 

安装完上面的软件和补丁之后,我们需要设置一些环境变量,以便程序正确运行。

a.      增加和修改系统环境变量

WEBKIT_HOME=<webkit源码根目录>

    WEBKITOUTPUTDIR=%WEBKIT_HOME%\WebKitBuild

    WEBKITLIBRARIESDIR=%WEBKIT_HOME%\WebKitLibraries\win

PATH中加入<cygwin安装目录>\bin”VS编译时会报一些命令无法找到的错误)

VSINSTALLDIR=<vs的安装目录>

b. 打开cygwinshell进入到%WEBKIT_HOME%中的WebKitTools\Scripts

# ./update-webkit

该命令进行更新svn以及下载依赖包的源码由于我们下的源码不含svn目录所以不会进行与最新仓库的同步只会下载依赖包源码大概1M.

WebKitSupportLibraries.zip拷贝到%WEBKIT_HOME%\

#./update-webkit-support-libs   #此时会安装WebKitSupportLibraries.zip

编译和调试

1.      编译

关于编译,有两种途径,其最终结果都是一样的。个人推荐第二种。如下:

a.      打开cygwin shell,执行如下命令

# cd <webkit home>/WebKitTools/Scripts

# ./set-webkit-configuration –debug #设置整个工程为debug模式

#./build-webkit #开始编译

b.使用VS2005进行编译:

VS打开%WEBKIT_HOME%\WebKit\win\WebKit.vcproj\WebKit.sln

VS加载完解决方案后,修改整个解决方案的属性,设置为Debug模式,这里还有其他几个模式,如Debug_CarioXX,这是跟Cario图形库相关的,这里我们没有安装Cario相关的开发包,所以使用Debug

因为quicktime sdk的原因最好将每个项目的C/C++这项中的Treat warn as error(将警告视为错误)改为否否则会因为一些警告而停止编译。QTMovieWinDumpRenderTreeImageDiff

    2.调试

编译完成后,就可以开始调试。调试时,将WebKit项目设为启动项目,F5开始调试,选择%WEBKITOUTPUTDIR%\bin\WinLauncher.exe,确定后会发现程序运行还需要一些DLL文件。这时需要从safari的安装目录下拷贝对应的dll文件,放入到WebKitBuild\bin\下面即可。我已经将这些DLL文件整理了一份。(DLL文件在服务器上共享)

还有一种调试方法是:附加到进程,需要你本机安装Safari浏览器,或者其他基于WebKit引擎的浏览器。调试时,会找不到符号,此时需要你添加远程的符号服务器:工具->选项->调试->符号:在里面添加: http://developer.apple.com/internet/safari/windows_symbols

此时你只要能确保WinLauncher能够正常运行,那么就可以开始调试了。

补充:正确运行WinLauncher,需要安装Safari这个浏览器,里面提供了WinLauncher运行时的一些环境,该环境可能被放置在WINDOWS\system32中,目前我还没找到哪些是必须的。

也可以直接用safari.exe调试,在webkit project属性里,debug标签下,command指向safari.exeenvironmentWEBKITNIGHTLY=$(OutDir)It is also recommended that you follow the instructions to configure Visual Studio to use Apple's Safari for Windows symbol server.

注意:下载的版本比较新(Webkit-r72487),若运行出现异常,可以尝试修改WebKit的项目属性:属性->配置属性->清单工具->输入和输出,修改里面的嵌入清单(Embed manifest)”改为否。(目前的异常都是因为环境的原因,环境正确基本都可以正常调试运行)

 

总结

整个编译过程中遇到的问题几乎都是跟安装环境相关一开始缺少了QuickTime SDKDirectX SDK到后面发现VS2005自带的编译器也有问题需要安装VS2005 Service Pack 1。安装完后,一般就会编译成功了,毕竟webkit的源码每天都有daily build,基本上拿来就能编译通过的。如果不成功,第一时间就应该想想是否是环境没配好。

调试的时候,一开始就会提示你缺少这样那样的dll,这个需要自己整理,但基本都能从Safari安装目录下找到。

参考

以上步骤参考自如下网站:

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

http://webkit.org/building/debug.html

http://trac.webkit.org/wiki/BuildingOnWindows

论坛徽章:
0
2 [报告]
发表于 2012-03-21 20:10 |只看该作者
有人知道 webkit源码中JS_EXPORT_PRIVATE和JS_EXPORTDATA的作用么?
我拿下来后编译时报错,比如源码中报错位置行为:   JS_EXPORT_PRIVATE int32_t toInt32(double);
报的错:c:\webkit\source\javascriptcore\runtime\JSValue.h(99) : error C2146: syntax error : missing ';' before identifier 'int32_t'
有了解相关知识的么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP