在windows下编译chromium

最近自己的成长目标想从模块设计转到系统架构上,刚好大组有个浏览器调研的任务,而chromium又是google开源的浏览器,所以开始对它进行了一些前期研究。这个过程十分不容易,我对windows下的开发环境了解得太少,光是编译就花了我很大的工夫,我把这里边遇到的问题记录下来。


开发环境:

windows7专业版,sp1

vs2013        我不想自己折腾自己,把原来的vs删了,装上编译要求的。

安装编译环境

windows 7.1 sdk 

http://www.microsoft.com/en-us/download/details.aspx?id=8279

windows sdk 8

http://msdn.microsoft.com/en-us/windows/hardware/hh852363.aspx

June 2010 DirectX SDK

http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=6812

如果安装过程中出现错误S1023

把Microsoft Visual C++ 2010 Redistributable删掉就可以了,我把x86和x64的都删了。

Windows Driver Kit 7.1.

http://www.microsoft.com/en-us/download/details.aspx?id=1


所有的这些我都是装在默认路径下,以避免需要更改路径的配置,最大限度避免由于路径导致的问题。

我在系统配置项中加了以下的配置项,我看了很多网上的攻略,我最后也不知道哪些配置项是有用的了。

新建DXSDK_DIR:C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\

Path新加(在原有的上增加的,请不要把原有的覆盖掉)

D:\chrome\depot_tools\depot_tools   安装depot_tools的目录

新建WDK_DIR:C:\WinDDK\7600.16385.1  Windows Driver Kit 7.1.安装目录


1、下载depot_tools

https://src.chromium.org/svn/trunk/tools/depot_tools.zip,解压就可以用。

注意按上文提到的在path中增加解压目录。

2、连接外网的需要,在进行下载编译时,可能需要连接code.google.com,这个被防火墙屏蔽了。

cmd命令窗口我不知道怎么设置使用代理,我直接用的vpn,叫NydusVpn,可以免费用一天,如果只是下载代码的话足够了,但是不排除以后要有什么更新的要求。如果大家能直接连外网,这一步忽略。

3、下载代码,建立一个空文件夹。如D:\chrome_new

在http://src.chromium.org/svn/releases/选一个你需要编译的版本,我不确定每个版本是否可以编译,通常选当前浏览器对应的版本应该是可以的,我按网上选的是36.0.1929.1

使用cmd进入D:\chrome_new

C:\Users\lenovo>d:

D:\>cd chrome_new

gclient config http://src.chromium.org/svn/releases/36.0.1929.1

等待命令完成。

正式下载

gclient sync --force  这个过程很慢,我等了可能一晚上

5、修改配置,这些配置我也是根据错误改的,我不并确定对每个人是否有用。

src\build\common.gypi

(1)查找msvs_disabled_warnings,找到

'msvs_disabled_warnings': [4351, 4355, 4396, 4503, 4819,

# TODO(maruel): These warnings are level 4. They will be slowly

# removed as code is fixed.

4100, 4121, 4125, 4127, 4130, 4131, 4189, 4201, 4238, 4244, 4245,

4310, 4428, 4481, 4505, 4510, 4512, 4530, 4610, 4611, 4701, 4702,

4706,4067,4996,4800,4251,4702,4819,

],

最后这几个数字没有的加上,因为编译的时候把可能把warning当成错误导致编译不过。

(2)查找msvs_cygwin_shell,修改为

'msvs_cygwin_shell': 1,

解决 generate_stubs.py : error : No inputs specified问题

(3)查找到msvs_cygwin_shell位置,在下边增加一行。

'msvs_cygwin_dirs': ['<(DEPTH)/third_party/cygwin'],

解决src\third_party\ffmpeg\.\setup_env.bat 不是内部或外部命令,也不是可运行的程序 的问题


6、生成可编译代码,在src目录下运行

set DEPOT_TOOLS_WIN_TOOLCHAIN=1
set GYP_MSVS_VERSION=2013 
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=component=shared_library
gclient runhooks


注意你的vs是 Visual Studio 2013还是Visual Studio 2013 Express
如果是Visual Studio 2013 Express,按官方的要求需要修改
set GYP_MSVS_VERSION=2013e

DEPOT_TOOLS_WIN_TOOLCHAIN我设置的是1,我目前还不知道0和1的区别。
GYP_GENERATORS,我多次尝试直接使用vs2013编译源代码,但是都无法成功,所以我最后还是用了ninja
所以配置在这里是msvs-ninja,ninja

7、ninja -C out\Debug chrome
我的笔记本很慢,这个命令又花了一晚上执行,到最后报了个错,让我很崩溃。错误是
[16593/16612] ACTION chrome_dll: hardl...utput_fbcf16b8da7e1fad199557357c2ac58f
FAILED: D:\chrome\depot_tools\depot_tools\python276_bin\python.exe gyp-win-tool
action-wrapper environment.x86 chrome_dll_target_hardlink_pdb_to_output_fbcf16b8
da7e1fad199557357c2ac58f..rsp
系统找不到指定的路径。
当文件已存在时,无法创建该文件。
系统找不到指定的文件。
已复制         0 个文件。
[16593/16612] ACTION chrome_dll: hardl...utput_fbcf16b8da7e1fad199557357c2ac58f
ninja: build stopped: subcommand failed.

这个错误有可能跟我多次编译没有成功有关。我的解决办法是:

打开src\out\Debug,找到chrome_dll_target_hardlink_pdb_to_output_fbcf16b8da7e1fad199557357c2ac58f..rsp文件

用记事本打开,最后两个参数是两个路径

 '../out/Debug/initial/chrome.dll.pdb' '../out/Debug/chrome.dll.pdb'"

在out/Debug目录下删掉文件out/Debug/chrome.dll.pdb

再次执行ninja -C out\Debug chrome就能够编译过了。


到此编译任务完成,行成的程序在src\out\Debug\chrome.exe

此文由本人回忆整理,如果有疏漏,请见谅。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值