• Windows下编译Webkit


    1.1 安装开发工具

    说明:Quicktime SDK ,DirectX SDK,最好安装到C盘默认路径下。否则会因为自定义的路径没有添加到环境变量中而编译错误。

    a) 安装Microsoft Visual Studio 2005(最好是英文版,中文版未试过)

    b) 安装Microsoft Visual Studio 2005 Team Suite Service Pack 1(解决VS2005在Vista以后的系统兼容性等的问题)

    c) 安装Visual Studio 2005 Service Pack 1 ATL Security Update(该更新暂时不知用途)

    d) 安装四个补丁:

    (1)KB918559

    (2)KB935225

    (3)KB943969

    (4)KB947315

    e) 安装vs2005后,还需装个Cygwin(最好安装在C盘中),Webkit官网提供了一个cygwin-downloader.zip供下载,解压以后,文件夹里面有一个cygwin-downloader.exe,点击运行它会自动下载101个软件包,下载完成后,点击Cygwin的安装程序选择从本地文件夹安装,把刚才下载的101个软件都装上即可。

    f) 最后,您还得去http://developer.apple.com/quicktime/download/下载一个quicktime sdk(注意是SDK不是quicktime应用程序,一开始我就装的是quicktime本身,这样不行),需要注册才能下载(如果苹果网站上没找到,直接从百度上搜一个安装也行,我的就是在CSDN上下的)。

    g) Install DirectX SDK

    Download the February 2010 DirectX SDK(newer versions do not support Visual Studio 2005)

    1.2 获取源代码

    a) 在http://nightly.webkit.org/第三个下载项 “Source”,如果不想下载最新版本可以下载其他版本,我就是按照网上的一些资料下载的:WebKit版本95481,据说这个还容易编译一些,反正我是编译的这个。

    b) 下载一个补丁包,WebKit Support Libraries,这个压缩包包含了Apple的几个非开源库的Windowsport。下完后放在Webkit源码解压后的根目录:~/WebKit-r95481/(注意这个补丁包不要解压,build的时候脚本会自己搞定的)。

    c) 上面两个下载完之后,需要设置windows环境变量WEBKITLIBRARIESDIR和WEBKITOUTPUTDIR:

                    

    d) 打开Cygwin,进入WebKit-r95481\Tools\Scripts文件夹运行两个脚本

    (1) ./update-webkit(该脚本会调用update-webkit-auxiliary-libs脚本文件,下载压缩包WebKitAuxiliaryLibrary.zip并自动解压到相应的文件夹中)

    注意:可能由于和谐网络的原因脚本文件update-webkit-auxiliary-libs中:

    my $auxiliaryLibsURL = "http://developer.apple.com/opensource/internet/$zipFile";

    会导致我连接不上相应的网页,后来我发现把它修改为:

    my $auxiliaryLibsURL = "https://developer.apple.com/opensource/internet/$zipFile";

    之后就能正常连上网络进行下载更新了,但是用cygwin下访问需要https连接时,有时会报告错误:

    error: error setting certificate verify locations:

      CAfile: /usr/ssl/certs/ca-bundle.crt

      CApath: none while accessing https://github.com/username/repositoryname/info/refs

    fatal: HTTP request failed

    这是因为缺少证书所致,你还需要在cygwin下安装ca-certificates包,下载相应的包如:ca-certificates-1.81-1.tar.bz2解压到相应目录即可,真是麻烦啊,汗一个!

    (2) ./ update-webkit-support-libs

    运行该脚本前,需下载一个补丁包WebKit Support Libraries,这个压缩包包含了Apple的几个非开源库的Windowsport。下完后放在Webkit源码解压后的根目录:~/WebKit-r95481/(注意这个补丁包不要解压,build的时候脚本会自己搞定的)。

    1.3 编译源代码

    做完以上所有准备工作,接下就要编译源代码,有两种编译方式:

    (1)Cygwin命令行

    进入~/WebKit-r95481/Tools/Scripts目录运行脚本“./build-webkit”(默认为编译Release版本,如编译Debug版本:执行./build-webkit --debug)

     

    (2)VS2005 IDE

    解决方案文件为:WebKit-r95481\Source\WebKit\win\WebKit.vcproj\WebKit.sln,编译前需要将编译器的“警告视为错误”设置为false,Visual Studio的顶层设置文件放在 WebKitLibraries/win/tools/vsprops的 common.vsprops,将里面的 WarnAsError="true"改成 false就可以了。我编译的是debug版本:

      

    附注:网上有很多文章都说用VS对各个项目的属性一一进行设置,这应该也可以。

    1.4解决编译过程中可能出现的常见问题

    1、问题描述:

    Can't open perl script "/cygdrive/e/project//WebKit/JAVASC~1/docs/make-bytecode-docs.pl": No such file or directory

    解决方法:这是因为你的电脑上已经安装了perl,在系统的环境变量PATH中含有你安装的perl路径,可将该PATH中perl路径去除,或者将自己安装的perl卸载。

    2、问题描述:

    FunctionPrototype.obj : error LNK2019: 无法解析的外部符号_u_charType_46

    Lexer.obj : error LNK2001: 无法解析的外部符号_u_charType_46

    YarrJIT.obj : error LNK2001: 无法解析的外部符号_u_tolower_46

    解决方法:运行./ update-webkit-auxiliary-libs下载辅助安装包WebKitAuxiliaryLibrary.zip

    3问题描述:

    6>..\platform\DefaultLocalizationStrategy.cpp(345) :error C2001: 常量中有换行符

    6>..\platform\DefaultLocalizationStrategy.cpp(347) :error C2001: 常量中有换行符

    解决方法:编码问题造成的,将345行替换如下:

    return formatLocalizedString(WEB_UI_STRING("Look Up “%@”", "Look Upcontext menu item with selected word"), selectedCFString.get());

    将347行替换如下:

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

    4、问题描述:

    vc++2005 error PRJ0002 的问题 错误的结果 1 (从“C:\WINDOWS\system32\cmd.exe”返回)解决方法:

    这个是关联错误,是因为有些模块编译错误造成的。解决了模块的编译错误,这个关联错误也就消失了。

    5、问题描述:

    对VC 2005 error C2220:警告被视为错误-没有生成“object"

    解决方法:

    参考FIX:VC2005编译错 误:1error C2220: 警告被视为错误 - 没有生成“object”文件

    选中解决方案,选择属性->配置属性 ->c/c++->常规->将警告视为错误,把 是 改成 否。

    6、问题描述:

    正在创建库WebCore.lib : fatal error LNK1106: 文件无效或磁盘已满: 无法查找到 0x51F6CD51

    解决方法:

    参考FIX:LNK1106:: 无法查找到 0x76364 无效或磁盘已满解决此问题, 添加 /IGNOREIDL 链接选项。

    在VisualStudio.NETIDE, 设置此链接器选项请按照下列步骤操作:

    a. 打开 属性页 对话框对于项目。

    b. 展开 链接 文件夹。

    c. 单击要查看嵌入的 IDL 属性页 嵌入的 IDL 。

    d. 将 忽略嵌入的 IDL 属性设置 是 。

    7. 问题描述:

    \platform\graphics\ca\win\LegacyCACFLayerTreeHost.cpp(39): fatal error C1083: Cannot open include file: 'd3d9.h': No such file ordirectory

    解决方法:

    需要安装DXSDK_Feb10.exe

    8. 问题描述:

    crypt324>LINK: fatal error LNK1104: cannot open file 'crypt32.lib'

    解决方法:

    Early versions of VisualStudio 2005 are missing the library'Crypt32.lib'. A workaround is to downloadand install the Windows Server 2003 R2Platform SDK then copy the file'Crypt32.lib' from the directory C:\Program Files\Microsoft Platform SDK for WindowsServer 2003 R2\Lib to %VSINSTALLDIR%\VC\PlatformSDK\Lib.

    9. 问题描述:

    >'touch' 不是内部或外部命令,也不是可运行的程序

    >NMAKE : fatal errorU1077: 'touch' : return code '0x1'

    解决方法:

    在vs2005->Tools->Options->Projects and Solutions->VC++Directories的Executable files中添加已经安装的cygwin的bin目录路径,比如路径为C:\cygwin\bin。

    10. 问题描述:

    fatal error C1083:Cannot open include file: 'stdint.h': No such file or directory

    解决方法:

    WebKitSupportLibrary.zip安装错误或者未安装导致这个错误,检查WebKitSupportLibrary.zip是否放错目录了,应将其放置到webkit源码根目录下,然后运行脚本”./ update-webkit-support-libs”。

    11. 问题描述:

    QTCFDictionary.cpp(30): fatal error C1083: Cannot open include file: 'CFData.h': No such file ordirectory

    QTDecompressionSession.cpp(29): fatal error C1083: Cannot open include file: 'ImageCompression.h': No such fileor directory

    QTMovie.cpp(31) : fatalerror C1083: Cannot open include file: 'FixMath.h': No such file or directory

    QTMovieGWorld.cpp(30) :fatal error C1083: Cannot open include file: 'GXMath.h': No such file ordirectory

    QTMovieTask.cpp(30) :fatal error C1083: Cannot open include file: 'Movies.h': No such file ordirectory

    QTMovieVisualContext.cpp(30): fatal error C1083: Cannot open include file: 'CVBase.h': No such file ordirectory

    QTPixelBuffer.cpp(29) :fatal error C1083: Cannot open include file: 'CFNumber.h': No such file ordirectory

    QTTrack.cpp(29) : fatalerror C1083: Cannot open include file: 'Movies.h': No such file or directory

    解决办法:

    首先卸载Quicktime SDK,然后重新安装它们到C盘默认路径下,不卸载的话,就要把原来的安装路径添加到环境变量中去。

    12. 问题描述:

    Cannot open include file:'WebKit2/WKHitTestResult.h': No such file or directory

    解决办法:

    可能跟代码有关,可以将WebKit2\WebKit2.h中的#include<WebKit2/WKHitTestResult.h>这一行注释掉。

    13、开启WML (最新版本已经不再支持WML,开启也没用了)

    解决方法:修改WebKit-r95481\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops文件,

    在<VisualStudioPropertySheet>末尾添加

    <UserMacro

    Name="ENABLE_WML"

    Value="ENABLE_WML"

    PerformEnvironmentSet="true"

    />

    在<Tool>标签的末尾添加;$(ENABLE_WML)

    说明:

    1. 开启其他宏,参照开启WML的格式。替换相应的宏名称即可。

    2. 在webkit老版本中运行脚本./update-webkit即可下载WebKitAuxiliaryLibrary.zip。现在需要运行./ update-webkit-auxiliary-libs

    1.5 最后说明

           总体上看具体的Windows版本对工程的编译映像不大,基本步骤应该都一样的,我自己就是在windows 7专业版 64位操作系统下进行的编译,按照以上的步骤成功的编译了Webkit。

    另外,本文主要参考了以下的文章:

    http://blog.csdn.net/rgxgf/article/details/7312592

    http://blog.csdn.net/zxncvb/article/details/6925177

  • 相关阅读:
    《VC驿站《PE文件格式解析》》
    《逆向分析教程》
    《逆向工程核心原理.pdf【2】》
    《逆向工程核心原理.pdf》
    一个完整的机器学习项目在Python中的演练(一)
    粒子群优化算法(PSO)之基于离散化的特征选择(FS)(三)
    Tensorboard详解(下篇)
    Tensorboard 详解(上篇)
    基于Doc2vec训练句子向量
    使用Keras进行深度学习:(七)GRU讲解及实践
  • 原文地址:https://www.cnblogs.com/zhaoweiwei/p/weiwei.html
Copyright © 2020-2023  润新知