设为首页 收藏本站
查看: 656|回复: 0

[经验分享] windows下编译chromium浏览器的15个流程整理

[复制链接]

尚未签到

发表于 2017-6-28 08:04:06 | 显示全部楼层 |阅读模式
  编译chromium
  系统为windows, 国内在windows上编译chromium的资料比较少, 我这篇文章只能作为参考, 记录我遇到的一些问题,因为chromium团队也会修改了代码,或者编译流程;
  如果你用linux或者mac,就别看这篇文章, 国外的编译文档都是linux和mac, 因为差别还是比较多的;

  15个编译流程:
  1:chrome源码; https://chromium.googlesource.com/chromium/chromium/
  2:系统要求:win7以后的版本, 处理器要求x86或x64;
  3:window下, 起码要8G的空余内存, 硬盘最好是固态的, chromium整个项目需要个10G的硬盘空间;
  4:vs2015第二版或者更新的版本, 安装的时候要选择自定义安装(选择Visual C++下的3个选项,MFC);
DSC0000.png

  以及window10的SDK, 反正看到SDK就选上吧 , 否则还要重新安装VC2015:
DSC0001.png

  5:下载depot_tools:https://src.chromium.org/svn/trunk/tools/depot_tools.zip;
  6:下载以后解压, 把depot_tools设置为环境变量,  和环境变量DEPOT_TOOLS_WIN_TOOLCHAIN  = 0;
  7:创建一个chrome_build目录, 把chrome的源码放在这儿(用git下载很慢很慢);如果是mac的系统,直接参考官方文章: http://www.chromium.org/Home



mkdir chromium //创建目录
cd chromium
fetch --no-history chromium //同步代码
  8:执行gclient sync, 没问题的话, 会自动下载python和git,此时要注意, 因为有GW, 我们要让git的协议也走代理 ,
  让git走代理的前提是有一个代理服务器或者socks代理,我这边用的是socks5的代理,代理端口为本地的1080:



git config --global https.proxy  socks5://localhost:1080
git config --global core.proxy  socks5://localhost:1080
git config --global http.proxy  socks5://localhost:1080
git config --global http.sslVerify false
  如果要取消git的代理我们执行下列命令:



git config --system (或 --global 或 --local) --unset http.proxy
git config --system (或 --global 或 --local) --unset httpx.proxy
git config --system (或 --global 或 --local) --unset core.proxy
  9:以上那一步是给git设置代理, 代理为本地的sock5, 但是还没给python设置代理, 如果不给python设置代理, 将会导致python下载文件失败, 我们通过修改depot_tools源码的方式让python走代理
  修改几个文件, 这个路径是相对与depot_tools的目录, 目前只要改3个python脚本文件,以后就不知道了, 要根据cmd给出的错误源,自己改去:
  depot_tools\gsutil.py
  depot_tools\external_bin\gsutil\gsutil_4.15\gsutil\third_party\httplib2\python2\httplib2\__init__.py
  depot_tools\external_bin\gsutil\gsutil_4.13\gsutil\third_party\httplib2\python2\httplib2\__init__.py
  在相关的文件import之后,主程序代码后面添加:



import win_inet_pton
import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 1080)
socket.socket = socks.socksocket
  因为我本地用shadowsocks,所以把代理设置为本地的1080端口
  下载过程如果卡死,可以通过任务管理器判断后台有没有在下载, 如果真的卡死, 就ctrl+C, 强制取消, 然后重新执行gclient sync, 重新同步;
DSC0002.png

  10:在src目录执行,  python会链接到https://storage.googleapis.com/下载第三方依赖模块:



gclient runhooks
  12: 生成BUILD.gn文件:



gn gen out\Default
  13:到目前为止,代码算是下载完毕, 然后执行:



ninja -C out/Default chrome
  如果机器不太行的话,我们可以修改编译参数:ninja -j  配置同步编译任务的数量 , 默认是6, 如果机器比较卡就要改, 否者编译的过程会出错;
DSC0003.png

  14:2万多的文件, 让他慢慢编译:
DSC0004.png

  15:几个小时的编译以后, 成果终于出来了:
DSC0005.png


  参考:
  python走socks5代理的参考:http://www.cnblogs.com/diligenceday/p/5719978.html
  执行gclient时候无法下载远程rar包的解决方法:  http://longyw.iteye.com/blog/2058949
  这个哥们成功编译了chromium : http://wendal.net/2015/02/04.html
  how to use git through a proxy:  http://cms-sw.github.io/tutorial-proxy.html, 老版本的git需要手动把socks5代理转化为git代理, 新版本的不用, 所以只要有新版本的git就好了;
  chromium源码 download_from_google_storage 无法下载文件 : http://www.cnblogs.com/ayanmw/p/4500825.html
  给python安装 pypi ,让python走代理 : https://pypi.python.org/pypi/setuptools#windows-simplified
  官方文档 :http://www.chromium.org/developers/how-tos/
  只能说chromium的源码实在太坑爹了, 即使有fq了,依然是各种悲剧, 哎:http://blog.csdn.net/qhh_qhh/article/details/49078425

  注意:
  一定要给git和python设置代理, 如果使用更改host的方式实现FQ, 会出现验证的问题,  导致python和git同步文件失败的情况
  不要使用别人下载好的项目,  因为chromium这个项目非常大, 编译会涉及到操作系统, 环境, 编译工具, chromium的版本, 以及FQ, 文件下载失败, 验证....各种问题, 自己能FQ下就去下
  建议大家别看网络上的chrome编译教程, 因为chrome的代码一直在更新, 现在也有了新的编译方式, 别人能够编译的, 你肯定不能编译最好的的方法是参考官方文档, 必须看官方:
  https://www.chromium.org/developers/
  https://www.chromium.org/developers/how-tos/get-the-code
作者: NONO
出处:http://www.cnblogs.com/diligenceday/
QQ:287101329
微信:18101055830

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-388884-1-1.html 上篇帖子: C# windows服务的创建与调试 下篇帖子: 在离线环境中发布.NET Core至Windows Server 2008
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表