WebKit 在 Windows 平台下编译小结
虽然WebKit 已经越来越多的被广大程序员接受,但其编译过程却非常之痛苦。下面将我编译WebKit 代码的经验与大家分享。
1) 获取WebKit 源代码
WebKit 源代码是使用Subversion 工具做管理的。因此,只要具备Subversion 客户端就可以从http://svn.webkit.org/repository/webkit/trunk 获取源代码。但是,这并不是最好的方式。在实际编译过程中通过svn拿下来的代码有可能为你带来许多的烦恼。因此,我推荐从WebKit的Nightly build 直接下载WebKit 源代码压缩包。具体地址是:http://nightly.webkit.org/builds/trunk/src/1 像WebKit 这么大的项目仍然遵循Daily Build 的原则,真是挺了不起的。
WebKit 源代码在本文写作时,版本是r52221 但我最近两天都没有将该版本的WebKit编译成功。原因是,使用Visual Studio 2005 打开项目几分钟后,Visual Studio 2005 会停止响应。我测试过r50006版,也就是5字头的第一版,就没有这个问题。版本号越大说明源代码越新,反之就越古老。
2) WebKit 编译环境的搭建
WebKit 网站有一篇文章说明了一下WebKit 在Windows 平台下的环境搭建:http://webkit.org/building/tools.html 但这篇文章写得也太过简单了。这也是WebKit 最最蹂躏人的地方。我在历经十数次失败之后,终于找到了通往目标的捷径。
硬件方面
内存最好找一台内存大于2G的计算机。 因为WebKit 项目太过庞大了,会生成数以百计的.obj 文件。在执行链接操作时,内存会需要大概1.6G内存。如果你机器安装的又是Vista 之类的吃内存操作系统,那就等着看link.exe 告诉你"Out of memory"吧。 我安装了Vista的机器的内存只有区区2G,链接了数次都没有成功,最后逼得我在安全模式下(连网卡驱动都没敢加载)编译,终于在内存峰值到达1.99G 时涉险过关,真是太刺激了,太刺激了。
硬盘当然是越大越好,因为WebKit 源代码展开后需要占用160M-190M磁盘空间,编译过程产生的中间文件需要大约4G的存储空间。外加上Cygwin Visual Studio 等占据的磁盘空间,这些还是挺大的。 最最重要的是系统盘最好预留出4G左右的空间。
其实使用多核的CPU对编译WebKit 也是有好处的,编译脚本可以同时并行的调用cl.exe 编译WebKit,大大缩短了编译时间。
软件方面
首先你需要安装Visual Studio 2005 SP1 如果是Vista 或者Window 7 需要安装 SP1 update for vista。 Visual C++ 2005 Express 也是可以编译WebKit的,但是需要单独安装 Platform SDK。 实践证明WebKit 在Platform 5.0 6.0 上都可以编译通过。
这里也会引申出一个问题,如果你的机器上已经安装了Visual Studio 2008 怎么办? 别担心,Visual Studio 2005 和Visual Studio 2008 是可以共存的,并且Visual Studio 2005 可以在Viusal Studio 2008 之后安装。但是,需要注意的是,当Visual Studio 2005 在Visual Studio 2008 之后安装后,WebKit 的perl脚本只会到 “系统盘\Program Files\Microsoft Visual Studio\” 下面去找VC 的bin文件夹(也就是cl.exe 所在文件夹)。如果你安装的VS 2005 不在系统盘,需要将VC的bin文件夹拷贝到系统盘的那个目录中去。
在安装完Visual Studio 2005 之后,需要安装另一个大块头Cygwin。Cygwin实际上是在Windows 上模拟了一个Unix 环境。 安装Cygwin最好不要直接使用Cygwin网站上给出的setup.exe 文件。而是使用WebKit.org网站上给出的cygwin-downloader 工具。 cygwin-downloader 会下载编译WebKit 所需的101 个工具(现在可能又多了几个),诸如perl、zlib、bash 等等。待下载完成后,再运行Cygwin的安装工具 Setup.exe 选择从本地目录安装。请注意!Cygwin 要安装到系统盘分区下,如C盘是系统盘,那么Cygwin就必须安装在C:\cygwin 下。安装完成后,大约会占据几百兆的空间。
下一步,仍需要安装的是QuickTime SDK。 据有人说可以不安装这个QuickTime SDK,但我发现如果不安装的话WebKit 解决方案中的QTMovie 项目一定是无法编译成功的。 QuickTime 一定要安装在 系统盘:\Program Files\QucikTime SDK\ 下面,千万别改动安装路径。
最后,在解压缩WebKit 源代码文件之后,还需要到webKit.org 站点下载 WebKitSupportLibrary.zip 文件,这个文件是一些第三方库在Windows 平台上预先编译好的版本。供WebKit 链接时使用。下载后,zip文件无需解压缩,直接放在WebKit的根目录下即可。
编译步骤
1) 设定环境变量。将WEBKITLIBRARIESDIR设定为 WebKit 源代码目录\WebKitLibraries\win 路径; 将WEBKITOUTPUTDIR 设为你打算要存放obj和dll 的输出文件夹,当然这个文件夹所在的分区至少要有4G的剩余空间。
2) 执行更新脚本。 请在桌面上运行cygwin 的命令行窗口,然后通过CD 命令(和DOS的CD命令一样) 跳转至WebKit 源代码目录\WebKitTools\Scripts 文件夹下。比如,我的WebKit 源代码放在F盘,就是 cd F:/WebKit/WebKitTools/Scripts/ 运行该目录下的 Update-WebKit 和 Update-WebKit-Support-libs 两个脚本。 很多博客上都没有提到这个步骤,实际上这个步骤是能否成功编译的关键。
3) 成功执行完上面两步后,就可以使用Visual Studio 2005 打开位于 WebKit 源代码目录\WebKit\win\WebKit.vcproj\ 目录下的 WebKit.sln 解决方案了。这个sln默认带有六个编译配置 Debug、Debug_all、Debug_Cairo、Release、Debug_Internal、Release_Cairo。用Release 编译出来的就是用苹果自己的渲染引擎的版本,和Safari 的一致。 用Release_Cairo 编译出来的是支持Cairo渲染引擎的版本,这个版本可以脱离苹果的环境单独跑,但同时也无法放到苹果的Safari 环境中运行。要想监测编译是否成功,可使用WinLauncher.exe 这个应用程序加载WebKit 进行测试。
先写到这里,以后想起什么来再补充吧。
WebKit 在 Windows 平台下编译小结的更多相关文章
- 实用图像处理入门 - 2 - Windows平台下编译openCV
标签中的部分 font-family: 华文细黑; font-size: 26px; font-weight: bold; color: #611427; margin-top:40px; } h2 ...
- DevEco Device Tool 2.1 Beta1 的Hi3861在Windows平台的编译体验
DevEco Device Tool迎来了2.1 Beta1,其中的亮点之一是:支持Hi3861开发板的源码在Windows平台编译.带着浓厚的兴趣,第一时间做了一次体验. 首先在官网下载" ...
- windows平台下基于QT和OpenCV搭建图像处理平台
在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并 ...
- Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)
概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...
- windows平台下基于VisualStudio的Clang安装和配置
LLVM 是一个开源的编译器架构,它已经被成功应用到多个应用领域.Clang是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程 ...
- [转]Windows平台下安装Hadoop
1.安装JDK1.6或更高版本 官网下载JDK,安装时注意,最好不要安装到带有空格的路径名下,例如:Programe Files,否则在配置Hadoop的配置文件时会找不到JDK(按相关说法,配置文件 ...
- Windows平台下的内存泄漏检测
在C/C++中内存泄漏是一个不可避免的问题,很多新手甚至有许多老手也会犯这样的错误,下面说明一下在windows平台下如何检测内存泄漏. 在windows平台下内存泄漏检测的原理大致如下. 1. 在分 ...
- Windows平台下源码分析工具
最近这段时间在阅读 RTKLIB的源代码,目前是将 pntpos.c文件的部分看完了,准备写一份文档记录下这些代码的用处.处理过程.理论公式来源.注意事项,自己还没有弄明白的地方.目前的想法是把每一个 ...
- Windows平台下使用pthreads开发多线程应用
pthreads简介 POSIX 1003.1-2001标准定义了编写多线程应用程序的API(应用程序编程接口),这个接口通常被称为pthreads.在常见的操作系统中,例如Unix.Linux.Ma ...
随机推荐
- ASCII-->Ansi-->Unicode-->UTF8 关于编码 自己的总结
各种不同的编码 无非就是效率 最大化. 我猜测编码的进化流程: ASCII(American Standard Code for Information Interchange)----满足了美国和西 ...
- Educational Codeforces Round 25 D - Suitable Replacement(贪心)
题目大意:给你字符串s,和t,字符串s中的'?'可以用字符串t中的字符代替,要求使得最后得到的字符串s(可以将s中的字符位置两两交换,任意位置任意次数)中含有的子串t最多. 解题思路: 因为知道s中的 ...
- LeetCode862. Shortest Subarray with Sum at Least K
Return the length of the shortest, non-empty, contiguous subarray of A with sum at least K. If there ...
- CentOS/RHEL Linux安装EPEL第三方软件源
https://www.vpser.net/manage/centos-rhel-linux-third-party-source-epel.html
- springboot1.5.4 idea 自动保存编译更新
maven dependencies增加 <dependency> <groupId>org.springframework.boot</groupId> < ...
- Python全栈开发之5、几种常见的排序算法以及collections模块提供的数据结构
转载请注明出处http://www.cnblogs.com/Wxtrkbc/p/5492298.html 在面试中,经常会遇到一些考排序算法的题,在这里,我就简单了列举了几种最常见的排序算法供大家学习 ...
- 安装deb包解决依赖问题
在使用 dpkg -i 安装deb包后,会出现依赖关系而不能正常安装软件,这个时候先更新下源然后解决依赖关系后重装即可. sudo apt-get update # 更新 sudo apt-get - ...
- 【WPF】城市级联(XmlDataProvider)
首先在绑定的时候进行转换: public class RegionConverter : IValueConverter { public object Convert(object value, T ...
- 使用FlashPaper在线转换.doc为.swf_实用技巧
https://yq.aliyun.com/ziliao/160044?spm=5176.8246799.0.0.JBbqjY 摘要: 本文讲的是使用FlashPaper在线转换.doc为.swf_实 ...
- Domato学习
A DOM fuzzer 转:https://github.com/google/domato Written and maintained by Ivan Fratric, ifratric@goo ...