跳到分类
  • 首页
  • 关于本站

关注互联网最新资讯,最新技术趋势
首页
码农视界
大数据
开源技术
创业动态
发表于 2017-10-12
0 条评论

chrome代码的编译和调试(全部过程经本人亲自验证)

观点视界 首页

在我干过的项目工程中,代码量及工程量能比得上chrome的目前还没有,(ps,原谅我,我没有编译过windows,哪怕是98,只是曾经编译过一版dos),正好项目组要做一版chrome浏览器插件,索性拉取了最新的chrome代码,利用仅有的机器资源,编译了一版chrome工程,编译过程虽然难度不大,但对环境要求还是比较苛刻的,而且比较耗时,作为心得简单记录一下,以备查阅,也能方便同行作为编译攻略使用。

系统准备:
chrome最新的代码(人家官方叫Chromium),官网上要求,在windows上,必须使用win7的系统,64位的(32位系统不是不行,而且根本无法运行如此大的工程,我曾经尝试过,每次都是工程把机器干死机了为止),最好8G以上内存,我建议16G以上吧,8G可以编译,但调试起来,很容易把vs调试器干死掉,硬盘最低要求200G吧(最好是ssd硬盘,这样编译及调试过程,会顺畅一些),还有 Visual Studio 2013 Community sp5版 或者 Visual Studio 2013 Professional sp5版,同时一定要安装window 10 sdk,及最新版的directx sdk,这些都去官网上下吧,各个下载站上的不靠谱,骗子太多,而且官网也不慢。安装好了吗,安装好了继续往下看,没安装好,请自行继续安装。
(附chrome官网地址:http://www.chromium.org/developers/how-tos/build-instructions-windows)

看到这里的时候,系统准备已经基本就绪了,先别着急,还有一点,需要做,调整你电脑的语言,控制面板->区域和语言->非unicode程序所使用的当前语言,请修改为英语(美国),ok了吗,继续~

开始下chromium的代码,请使用google提供的代码下载工具,depot_tools(从官网上下载吧,一个压缩包,解压即可使用),下载下来以后,解压到你所希望它在的位置,然后设置系统环境变量path,把depot_tools设置进系统路径(我的是D:\depot_tools\,咋?不知道怎么设置,系统属性->高级->环境变量,不知道这个咋设置,建议您别往下进行了,后面的难度不适合您玩),既然打开环境变量了,索性把以后用到的环境变量,都设置一下吧,如下,照着做就好,不用问为什么
set DEPOT_TOOLS_WIN_TOOLCHAIN = 0
set GYP_DEFINES=branding=Chromium buildtype=Dev component=shared_library disable_nacl=1
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_MSVS_VERSION = 2013
set set BUILDTYPE=Release(或Debug,可以生成sln时再在命令行设置设置)
好了吗?继续~

打开一个命令行窗口(最好以管理员权限打开,win7上叫提权),运行一个命令:
gclient
这个命令会会自行下载python,git,svn等等依赖工具,即使你机器原来装了,也再装一下吧

建一个文件夹,我的叫chrome_build,您随便,但别用中文起

然后命令行执行cd d:\chrome_build,进入到该文件夹,进行源码下载
执行:
fetch chromium
注意,此时请注意盯着屏幕,大概30秒左右,会出现一行提示:sync,即告诉你,要开始同步代码了,这时请ctrl+c,中断该命令,然后敲入下一行命令,回车执行:
gclient sync –no-history –force
这样做,是为了避免下载太多的chromium历史版本,会比较快一些

这个过程会很久很久,看你的网速,大概相当于看5个日本家庭爱情电影的时间(每个1G以上吧),当然你也可以休息,
(5个小时过去了~~~~~~~~~~~~~~~)

去看命令行,代码下载是不是已经执行完了
(ps:请注意如果你是在国内做以上操作,请自行购买vpn,翻墙,免费的vpn越来越少,而且不好使)

假设你代码已经下载完成了,请检查一下chrome_build目前的大小,应该在8G以上,如果小于8G,请继续实行gclient sync –no-history –force ,因为肯定代码没下全

好了,假如此时,经检查,您代码下的比较全,那么恭喜您,可以开始编译了

请在命令行,继续执行cd src,进入到d:\chrome_build\src目录
然后,在src目录下,执行以下命令:
gclient runhooks –force

这个命令,会下载后续编译过程中,需要的东西,并声称vcproject文件,及chrome.sln解决方案,我的经验,这个过程中,可以有warning,但不能用error
命令执行,大概半个小时左右,会在你的d:\chrome_build\src\chrome 目录下,生成所有的vcxproj工程文件,及chrome.sln

请检查有没有chrome.sln,如果有,说明生成好了,如果没有。。。,请检查上面我让你设置的几个环境变量是否已经设置了,什么。。。,忘了设置?请自行掌嘴20下~

好了,此时,终于可以开始编译了,请保持在目前的src目录,执行下面的命令:
ninja -C out/Debug chrome
(如果你是生成的Release工程,请执行ninja -C out/Release chrome),默认生成的是win32的,如果要生成x64的,请在编译前,执行下面命令:
python build\gyp_chromium -Dtarget_arch=x64

好了,这个过程,大概要3-4个小时,继续看片或者睡觉吧~~

buy it 如果编译过程没有出错的话,您会在d:\chrome_build\src\out\Debug\,目录下发现chrome.dll chrome.exe
恭喜您,编译成功!

click here 什么,你想用vs 2013来编译,不想用ninja命令行来干,好像很麻烦,vs 2013编译,要自行修改一些设置和部分代码,至少最新版是这样,所以还是老老实实的用ninja命令行来干吧

编译好之后,打开chrome.sln工程,并将chrome.vcxproj设置为启动工程(startup project),然后点击运行(或调试运行),你就可以用vs 2013来调试你的chrome了,通过设置关键的断点,你可以通过查看callbakc,逐步了解,chrome代码运行的过程,非常有意思,下面是我查看,chrome浏览器打开一个网页窗口的过程,通过看堆栈,就能引导你逐步读懂chrome的代码:

关于代码的结构,及调试中的细节,及有趣的东西,后续文章再写~,累了,回去睡觉了,明天还得上班,而且不允许迟到…….

转发到新浪微博
除非注明,本站文章均为原创或编译,转载请注明: 文章来自程序界
分享给朋友:

轻松一刻

相关文章
随机文章
    • 暂无相关日志
    • Facebook仍值得信赖的十理由:坐拥百亿现金流
    • 盛大游戏高管再变动:董事长兼CEO谭群钊离职
    • 2012十大最佳CEO提名:人人网CEO陈一舟
    • 比较跨语言通讯框架:thrift和Protobuf
    • 据DoNews调查:移动开发者不盈利怨周鸿祎
    • 个人角度谈一点对go和erlang两门语言的体会
    • 初创企业获得融资的五大策略
    • 腾讯刘炽平:页游与社交游戏市场占有率超30%
    • 大数据时代企业腾飞的利器:接入一套高效的外部数据系统来辅助决策
    • 百度大规模反制360:双方趁夜上演攻防战
所有评论

发表评论

取消回复

带星号*是必填项目。由于缓存,您的评论会稍后显示;请以个人的名义发表评论,昵称填写产品或网站名、评论内容附加无关网址将不通过审核。

上一篇: 国内访问gmail的方法

下一篇: 2015年,年终小结

← 返回首页
热门资讯
本周
本月
昨日
    • 失乐园—疫情下北京手艺人众生像,当下失落的码农和相声艺人
    • 字节跳动裁撤投资部,反垄断改革举措继续深入
    • 微软将面临严格审查!斥资687亿收购暴雪或将构成垄断
    • 专利文件暴露Meta元宇宙野心:克隆全人类
    • chrome代码的编译和调试(全部过程经本人亲自验证)
    • windows下搭建android开发环境-史上最正确最清楚版
    • 简单谈一谈字符编码这点事儿
    • 这一年,过的快–我的2014年终总结
    • 个人角度谈一点对go和erlang两门语言的体会
    • 自己验证过的centos上protobuf安装过程
    • 从高级语言学起还是从c学起?
技术宅的思考
本周
    • 大数据时代企业腾飞的利器:接入一套高效的外部数据系统来辅助决策
    • 好马还需要配好鞍-现代化数据体系架构是企业在大数据时代取胜的关键
    • 细说互联网大数据时代蕴藏的创业机会
    • 盛大游戏高管再变动:董事长兼CEO谭群钊离职
    • 360搜索被指偷来的“市场第二”
    • 疑似PPS代理公司声明曝光:曾讨论收购PPTV
    • 网谣传盛大游戏,盛大在线将打包被360收购,良知网友诅咒造谣者:造谣死全家
    • 谁为京东苏宁的价格战埋单?
    • 硅谷创业公司出奇招,直接用函数作为招聘广告的标题
    • 传雅虎CEO梅耶尔要为每位员工配备iPhone
创业动态
本周
    • 密码保护:Chromium代码下载编译
    • 过去几年很火的万门大学倒闭,创始人童哲连夜跑路
    • 字节跳动裁撤投资部,反垄断改革举措继续深入
    • 2015年,年终小结
    • 国内访问gmail的方法
    • 那些年,我开发过的约炮软件-由陌陌上市谈谈im产品这点事儿
    • linux共享动态库中同名对象重复析构-两次析构或多次析构的解决办法
    • 周鸿祎冰水浇头,接受als慈善冰桶挑战
    • 一场地方网站的盛宴-5.10日车库咖啡地方站长沙龙小记
    • 一个比较靠谱的awk的学习笔记
联系我们

关于 / 关于本站

本站由 WordPress 驱动 ,主题由SoftUses 提供技术支持
沪ICP备11048881号-1

©2025