windows下编译chromium"/>
在windows下编译chromium
最近自己的成长目标想从模块设计转到系统架构上,刚好大组有个浏览器调研的任务,而chromium又是google开源的浏览器,所以开始对它进行了一些前期研究。这个过程十分不容易,我对windows下的开发环境了解得太少,光是编译就花了我很大的工夫,我把这里边遇到的问题记录下来。
开发环境:
windows7专业版,sp1
vs2013 我不想自己折腾自己,把原来的vs删了,装上编译要求的。
安装编译环境
windows 7.1 sdk
.aspx?id=8279
windows sdk 8
.aspx
June 2010 DirectX SDK
.aspx?displaylang=en&id=6812
如果安装过程中出现错误S1023
把Microsoft Visual C++ 2010 Redistributable删掉就可以了,我把x86和x64的都删了。
Windows Driver Kit 7.1.
.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
.zip,解压就可以用。
注意按上文提到的在path中增加解压目录。
2、连接外网的需要,在进行下载编译时,可能需要连接code.google,这个被防火墙屏蔽了。
cmd命令窗口我不知道怎么设置使用代理,我直接用的vpn,叫NydusVpn,可以免费用一天,如果只是下载代码的话足够了,但是不排除以后要有什么更新的要求。如果大家能直接连外网,这一步忽略。
3、下载代码,建立一个空文件夹。如D:\chrome_new
在,我不确定每个版本是否可以编译,通常选当前浏览器对应的版本应该是可以的,我按网上选的是36.0.1929.1
使用cmd进入D:\chrome_new
C:\Users\lenovo>d:
D:\>cd chrome_new
gclient config .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
此文由本人回忆整理,如果有疏漏,请见谅。
更多推荐
在windows下编译chromium
发布评论