win7 64位编译WebKit内核

编程知识 更新时间:2023-04-14 17:08:05
该过程主要参照Moon出品的Win7+VS2010编译WebKit总结(http://blog.csdn/wxdvc/article/details/8508077),表示感谢。
顺带留个qq:345271592,欢迎交流。


1.安装VS2010,最好是英文版,并使用默认路径安装(没敢换,怕出错。。。坑爹)


2.安装SP1:Visual Studio 2010 SP1.(下载页面:http://www.microsoft/download/en/details.aspx?id=23691,下载链接: http://download.microsoft/download/E/B/A/EBA0A152-F426-47E6-9E3F-EFB686E3CA20/VS2010SP1dvd1.iso,文件大小:1.48GB),最好也用英文版的。。。。


3.安装Windows SDK 7.1.(容易出错)(下载页面:Windows SDK 7.1.(下载页面:http://www.microsoft/download/en/details.aspx?id=8442,下载链接: http://download.microsoft/download/F/1/0/F10113F5-B750-4969-A255-274341AC6BCE/GRMSDK_EN_DVD.iso,文件大小:567MB)注意需要根据自己的机器进行选择,64位与32位是不同的)
  错误如下,可能有些错误,有些机器不会遇到,以下是我遇到的错误:
  1>.出错内容:Installation of the "Microsoft Windows SDK for Windows 7" product has reported the following error: Please refer to SamplesSetupHTMLConfigDetails.htm document for further information.
    解决办法:在控制面板里卸载:Microsoft Visual C++ 2010 x86 Redistributable和Microsoft Visual C++ 2010 x64 Redistributable两项,也许你的是一项,总之卸载就对了。(另外可参考:http://wwwblogs/duanshuiliu/archive/2013/04/02/2994776.html)
    参考地址:http://support.microsoft/kb/2717426
  2>.出错内容:A problem occurred while installing selected Windows SDK components.


Installation of the "Microsoft Windows SDK for Windows 7 Compilers for x86" product has reported the following error: 安装时发生严重错误


Please attempt to resolve the problem and then start Windows SDK setup again. If you continue to have problems with this issue, please visit the SDK team support page at http://go.microsoft/fwlink/?LinkId=130245.


    解决办法:安装SDK ver7.1时不要勾选Visual C++ compiler,装完后安装KB2519277


4.安装QuickTimeSDK
  该SDK下载比较麻烦,需要申请AppleID等等,我已经上传到我的资源中,供大家下载使用,资源中有三部分,前两个可能不会用到,只是下载时我一并下载了,主要用到quicktimesdk.zip中的exe安装。(下载页面:http://developer.apple/quicktime/download/,下载链接: http://adcdownload.apple/QuickTime/quicktime_7.3_sdk_for_windows/quicktimesdk.zip,文件大小:2.02MB)


5.安装DirectX SDK(下载页面:http://www.microsoft/downloads/en/details.aspx?displaylang=en&FamilyID=2c7da5fb-ffbb-4af6-8c66-651cbd28ca15,下载链接: http://download.microsoft/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe,文件大小:554MB),这个需要验证系统是否正版,照着流程做完就可下载了,盗版我不知道能否下载到。


6.编译过程:
  与源文件文件夹相关的修改
现在假设你的源代码文件夹名为WebKitSource。以我为例,我解压源文件压缩包之后得到的文件夹WebKit-r128959就相当于这里的WebKitSource文件夹。
将WebKitSupportLibrary.zip拷贝到WebKitSource下。注意,不要解压。


以下的vs2010-build-env.cmd和pdenenv在我的资源中下载即可。
将vs2010-build-env.cmd拷贝到WebKitSource下,修改其中set CYGWIN_SOURCE_DIR=C:cygwin等号右边的值,即你电脑中Cygwin的安装目录。另外,我将CYGWIN_DIR设置为C:cygwin_dir,你可以根据自己的需要修改。


将pdenenv拷贝到WebKitSource/Tools/Scripts下覆盖原版。


将WebKitSource/Source/WebCore/Modules/quota中的文件全部拷贝到WebKitSource/Source/WebCore/storage中去。


用VS2010打开WebKitSource/Source/WebKit /win/ WebKit.vcproj / WebKit.sln,IDE会弹出一个Conversion Wizard告知你需要对方案(solution)或工程(project)进行转换,点击下一步完成转换。


将WebKitSource/Tools/vcbin下的cl.exe和midl.exe重命名为cl-.exe和midl-.exe(即让它们失效)。


打开WebKitLibraries /win/ tools/ vsprops/ common.props,修改TreatWarningAsError为false。


打开 Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def,删除


其中的“?nullptr@@3Vnullptr_t@std@@A”。


找到 WebKitSource/ Source/ WebCore/ platform/ network/ curl/ CookieJarCurl.cpp和 WebKitSource/ Source/ WebCore/ platform/ image-decodersImageDecoder.cpp,右键打开Properties菜单,选择Configuration Properties>General,修改Item Tyep为C/C++ compiler。(10月9日后记:我尝试找了一下这两个源文件竟然没找到,我当初的确修改过,此问题留待修改)注意:上述修改是在vs2010的编译器中进行。


打开WebCore/ platform/ LocalizedString.cpp,在264行和266行中有"Look Up “%@”"和"Look Up “<selection>”"注意%@和<selection>两边的双引号是全角的,然后删除这些全角的引号即可。


打开WebKitSource/Source/WebCore/platform/ graphics/ cg目录下的ImageSourceCG.h、WebKitSource/Source/WebCore/platform/ network/ cf目录下的SocketStreamHandle.h和SocketStreamError.h三个头文件,在#define xxx_h(以ImageSourceCG.h为例xxx_h就是ImageSourceCG_h)这行后面添加:
#ifndef ExportMacros_h
#include "config.h"
//你可以取消下面这行的注释,在编译过程中可能会看到我写的提示信息
//#pragma message("===>缺少定义,手动引入config.h")
#endif
在TestWebKitAPI工程的config.h(WebKitSource/ Tools/ TestWebKitAPI/ config.h)首部添加:#define _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH


Ashod编写(我添加了一些中文注释)的vs2010-build-env.cmd首先创建了一些链接,这样你就不必再把WebKitSource文件夹移动到Cygwin的用户目录下了;然后设置了一些必要的环境变量:WEBKITOUTPUTDIR(编译结果的输出目录)、WEBKITLIBRARIESDIR(WebKit相关库的目录)、VSINSTALLDIR(VS100COMNTOOLS是安装VS2010后自动添加的一个环境变量,set VSINSTALLDIR=%VS100COMNTOOLS%....就获得了VS2010的安装目录)、PATH(执行脚本的路径,在默认PATH的基础上添加了%WEBKIT_DIR%ToolsScripts和%CYGWIN_DIR%bin);最后脚本直接启动了Cygwin。




针对基于VS2010的编译,Ashod对pdenev脚本进行了一些修改(这个脚本本来是WebKit团队针对VS2005所写的),自动实现了5、6、7、8的修改。为了保险起见,你可以手动进行一下这些修改。


至于第9个修改,我是在Ashod的博文中看到的。我觉得这个修改不做也没有影响,同时我也不确定Ashod所写的pdenev中是否自动实现了这个修改,但是我确定进行这个修改不会导致编译失败。


根据经验,头文件并不是编译单元,编译器会直接用头文件的内容替换#include的位置。但是,我在编译的过程中发现ImageSourceCG.h、SocketStreamHandle.h和SocketStreamError.h这三个头文件就好像被单独编译了,因而在单独编译的时候因为找不到某些符号而报错,而config.h所包含的那些头文件中对这些符号进行了完整的定义。于是乎,我添加了第11步中的几行代码以确保这三个头文件始终能找到所需的符号。


第12步所做的操作是为了一个链接错误,这个错误产生的原因是编译时用Release模式去链接了一个Debug编译出的lib,或者用Debug模式链接了Release编译的lib。加入12中的那个宏就屏蔽了匹配检测,从而避免了这个错误。


以上摘抄自:http://blog.csdn/wxdvc/article/details/8508077,有点儿小的修改。




出错处理:
1.error MSB6001: Invalid command line switch for "CL.exe". Item has already been added. Key in dictionary: 'tmp'  Key being added: 'TMP'


 解决方法:使用Notepad+打开cygwin//etc//profile文件,将其中的源码注释为如下格式,注释前代码前没有‘#’(此为注释符号),下面是注释后的样子。
 # ORIGINAL_TMP=$TMP
 # ORIGINAL_TEMP=$TEMP
 # unset TMP TEMP
 # tmp=$(cygpath -w "$ORIGINAL_TMP" 2> /dev/null)
 # temp=$(cygpath -w "$ORIGINAL_TEMP" 2> /dev/null)
 # TMP="/tmp"
 # TEMP="/tmp"

在上述应用的作者解决方法中,说只注释unset TMP TEMP一行即可。


 重要:注释完一定要重启计算机再编译,否则错误同样出现,我当时就在这里载了跟头。




2.开始编译
如果这些操作都顺利完成,你就可以双击vs2010-build-env.cmd尝试编译了。在Cygwin命令行中你需要输入:
cpan HTTP::Date(这个操作可能只在第一次编译的时候要用到,事实上与环境相关)。


update-webkit(这个操作每个源文件文件夹第一次编译的时候要用到,下载并安装WebKitAuxiliaryLibrary.zip)。


build-webkit --debug | tee log.txt。


build-webkit --debug | tee log.txt是以Debug模式进行编译,同时将编译信息输出到Cygwin用户目录下log.txt中去。你完全可以写成C:log.txt或C:/log.txt以便查看log。另外,我在编译的过程中会使用tee logMMDDHHMM.txt(如log05211314.txt就代表5月21日13点14分的log,我的不能成功显示成这个样子,不知原因),推荐大家这样做,保存log对于诊断并解决错误至关重要。



编译成功后,运行上述作者所说的MiniBrowser遇到一下错误:Failed to determine path to Apple Application Support directory.

解决办法:参照http://wwwblogs/xyz2abc/archive/2012/04/09/2438913.html地址所述方法,注意要添加的位置,万万注意。

更多推荐

win7 64位编译WebKit内核

本文发布于:2023-04-12 05:11:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/c843fd015dd685d69a4efcfcad475bb3.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:内核   WebKit

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 69336文章数
  • 14阅读数
  • 0评论数