编译google chromium代码,并修正gclient脚本中的一些bug
来源:互联网 发布:美工的职业要求 编辑:程序博客网 时间:2024/06/05 03:20
写在开头
正如一位网友说的,在这个充满大量工业垃圾代码的环境,google 开源 chromium的出现无疑给这样的环境添加了几分艺术气息。我对此深有同感,确实,在这个浮躁的大环境下,我们产出的大部分程序代码,如果要和google这样的顶尖技术公司产出的代码相比,说我们大部分时间都在编写垃圾代码是不为过的。
但我们不应该为此就感到悲观,毕竟象google这样的公司集聚的是全世界最顶尖的技术天才。我等凡人怎能和他们相比,就我个人而言只能抱着虔诚的心仰视他们的‘艺术作品’。作为技术人员,虽然不是每个人都可以成为天才,但并不妨碍我们站在巨人的肩上让自己看得更远一些。而现在的问题仅仅是有没有某种内因或者外因促使你这样去做!
如果你已经厌倦了每天充斥在你眼前大量的‘垃圾’代码,不妨把浮躁的心平静下来欣赏一下‘艺术品’。google chrome浏览器源代码是一个很好的开始,虽然其代码工程非常之庞大(可能在你我看来),但这并没有影响它的优雅性。它是一座‘金矿’,我们的任务是做好发掘工作。
编译步骤
做好发掘工作的第一步就是获取代码并能成功编译调试,我这里只谈在windows环境下的编译,我的操作系统是Windows Server 2008 企业版,其他windows 环境应该没有什么大的区别。其实我写此文的目的可能更多的是加深印象,做个备忘,因为官方描述的编译过程已经比较清楚了,如果你对官方的文档描述更感兴趣,请参考这里。
注意要下载代码并完全编译请准备至少10G空闲硬盘空间,你的机器配置越高越好。机器配置的好坏直接决定你等待编译的时间长短。
我这里仅仅是把步骤简化整理如下:(注意准备至少10G的)
1.安装Visual Studio 2008、安装VS2008 Service Pack 1、安装vs2008 sp1补丁的补丁KB967631; KB960075; KB958842; KB957912 和KB971092.注意KB971092补丁比较大,共300多M。
2.安装Windows 7 SDK,最好下载ISO镜像版,要小很多。注意Windows 6.1 SDK 在39982的修订版本之后将不再支持。项目版本和日值情况可以到这里查看。安装完成后,在开始菜单中选择Windows SDK Configuration Tool和vs2008整合集成。
3.获取安装depot_tools工具,这是google自己用python封装的svn代码获取客户端工具,下载depot_tools.zip并解压到比如d:/depot_tools目录。将depot_tools目录路径加到PATH环境变量。然后新建环境变量GYP_MSVS_VERSION=2008,这个环境变量的目的就是最终生产vs2008的工程类型。
4.下载代码,在比如D:建立一个chromium的目录,然后命令行cd到该目录,明确你需要下载的版本,比如在我写此文的时候官方最新发布的稳定版为4.1.249.1059,我要下载此版本的源代码,先在d:/chromium目录执行
gclient config http://src.chromium.org/svn/releases/4.1.249.1059
该命令并没有真正下载代码,而只是做一个客户端配置工作,注意由于第一次运行gclient,依赖的python和svn工具可能还没有安装,此时gclient会自动下载并安装,因此你不必单独事先安装svn客户端和python。你可以在窗口上看到正在安装python和svn的进度提示,你只需要等待,如果中途出错,只需要再次执行上述命令即可。注意gclient config命令只需要执行一次,除非你需要同步其他版本的代码而改变了配置路径。
=========================================================
开始编译源码的时候,如果是使用较新版本的gclient,总是提示
Installing subversion ...
[-] SHELL.APPLICATION 80070002: Failed to open zip file.
... Failed to checkout svn automatically.
Please visit http://subversion.tigris.org to download the latest subversion clie
nt
before continuing.
You can also get the "prebacked" version used at http://src.chromium.org/svn/tru
nk/tools/third_party/
我的环境变量设置了也没用,还是看脚本来的实在。分析了一下gclient.bat,其实就是干两件事
1)下载http://src.chromium.org/svn/trunk/tools/third_party/svn_bin.zip
2)下载http://src.chromium.org/svn/trunk/tools/third_party/python/ 这个目录
原来里面有一段代码写反了,应该是先检查是否auto_updata:
:: Shall skip automatic update?
IF "%DEPOT_TOOLS_UPDATE%" == "0" GOTO :SKIP_UPDATE
:: We can't sync if .\.svn\. doesn't exist.
IF NOT EXIST "%~dp0.svn\." GOTO :SKIP_UPDATE
再去下载svn和python:
:: Will download svn and python.
:: If you don't want to install the depot_tools version of these tools, remove
:: the 'force' option on the next command. The tools won't be installed only if
:: not already in the PATH environment variable.
call "%~dp0bootstrap\win\win_tools.bat" force
if errorlevel 1 goto :EOF
估计是他们的程序员大脑犯困,搞错了。换个顺序,逻辑就对了
==================================================================
该命令完成之后,再执行 gclient sync --force
就开始同步下载代码了,现在的任务就是等待,根据你的网络情况,可能需要下载半天到一天以上不等,如果中途出错,只需要重新执行gclient sync –-force,会自动接着上次的下载。注意一定要加--force参数选项,否则可能下载不齐全。
5.编译代码,如果一切顺利,gclient sync –force执行完后,所有代码完全成功下载,并且自动生成了vs2008的解决方案工程文件,现在直接打开d:/chromium/src/chrome/chrome.sln解决方案文件,把chrome设置为启动工程,在chrome工程上点击右键选择build开始编译即可。根据你机器的配置情况,需要等待20分钟到2个小时以上不等,我在新购T410(I7 CUP、4G内存、7200转500G硬盘)笔记本上,编译了40分钟。
6.运行chrome,编译完成后,总共有将近200个依赖工程,最终会在chrome/debug目录下生成chrome.exe和相关文件。在vs2008中直接F5运行,然后在浏览器地址栏输入‘about:’ 回车核实版本号。如果显示:
转载自http://www.cppblog.com/GameAcademe/articles/144508.html?opt=admin
- 编译google chromium代码,并修正gclient脚本中的一些bug
- 使用gclient和代理下载Chromium代码
- VS 编译 Qt4.*.*库,并修正源码中的错误
- chromium源码下载并编译
- chromium的部署工具depot_tools和gclient
- Google 多源码管理工具 gclient
- Google 多源码管理工具 gclient
- Google 多源码管理工具 gclient .
- Google 多源码管理工具 gclient
- Chromium代码获得和编译
- 关于《基于汉明距离的LSH图像检索算法》代码的一些bug修正
- Google Chromium源代码Windows下编译步骤
- 编译google chromium项目的库
- 修正“苦练1天半,终于写出了一些常用doxygen风格的vim注释脚本”部分BUG
- Delphi 6 SOAP 源码中的BUG修正
- 首次接触chromium并编译的过程。
- Windows上检出并编译Chromium
- chromium中脚本执行的代码路径
- Understanding Disk I/O - when should you be worried?
- 学习和理解JAVA线程同步--生产者与消费者例子
- 重做Unix命令,快速有效学习新语言
- JavaScript学习(二)
- 让gcc和gdb支持intel格式的汇编
- 编译google chromium代码,并修正gclient脚本中的一些bug
- qt下的madplay播放器
- 我的html
- hdu-2003-求绝对值
- Objective-C中一种消息处理方法performSelector: withObject:
- linux中配置文件积累(screen)
- 2.3 CMMI2级——项目跟踪和控制(Project Monitoring and Control)
- SVN的一些操作
- android 数据库的常用方法