记录windows下编译chromium,备忘
编译windows下chromium,时间:20170619,
官方地址:https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md
一. 系统要求:
1. 64位机器,至少8GB的内存,推荐16GB以上。(我用的Win10 64位虚拟机,内存按照8G来的);
2. 至少100GB的硬盘存储空间,格式为NTFS。FAT32不支持大于4GB的文件,而在git下载时的文件可能会有20GB+;
3. Visual studio 2015 update 3;
4. Win7+ (我用的Win10编译,此处可能有个坑,下文介绍);
二. 系统配置:
1. 安装Visual studio 2015 update3,并安装window sdk 14393,vs需要安装Visual C++的三个选项包括MFC,Universal Windows Apps Development Tools > Tools (1.4.1) and Windows 10 SDK (10.0.14393);
2. 14393的SDK安装时要安装Debugging Tools For Windows,我一开始安装的时候,不知为何没有安装这个,修复了下后,才有的;
三. 安装depot_tools:
1. 下载depot_tools bundle,然后解压,地址:https://storage.googleapis.com/chrome-infra/depot_tools.zip;
2. 将depot_tools放到PATH环境变量的开始位置,至少在你安装的python和git的前面,因为depot_tools里面会下载python,如果在你安装的python后面的话,可能会出一些不可预期的问题;
3. 添加环境变量DEPOT_TOOLS_WIN_TOOLCHAIN,并设为0;
4. 打开cmd.exe,运行gclient,在第一次运行的时候,gclient会安装python/msysgit等必要组件;
四. 获取源码:
1. 打开cmd,在你想放置源码的位置,创建chromium文件夹并进入,mkdir chromium && cd chromium;
2. fetch chromium;
ps:这里有个问题,我用的Win10带的默认的windows defender是开启的,此时在下载完源码后会出现:
- Traceback (most recent call last):
 - File "D:\git\google\depot_tools\gclient_scm.py", line 965, in _Clone
 - os.path.join(self.checkout_path, '.git'))
 - File "D:\git\google\depot_tools\gclient_utils.py", line 158, in safe_rename
 - os.rename(old, new)
 - WindowsError: [Error 5]
 - [0:22:25] _____ removing non-empty tmp dir D:\google\_gclient_src_byzfvs
 - ----------------------------------------
 - Traceback (most recent call last):
 - File "D:\git\google\depot_tools\gclient.py", line 2378, in <module>
 - sys.exit(main(sys.argv[1:]))
 - File "D:\git\google\depot_tools\gclient.py", line 2364, in main
 - return dispatcher.execute(OptionParser(), argv)
 - File "D:\git\google\depot_tools\subcommand.py", line 252, in execute
 - return command(parser, args[1:])
 - File "D:\git\google\depot_tools\gclient.py", line 2117, in CMDsync
 - ret = client.RunOnDeps('update', args)
 - File "D:\git\google\depot_tools\gclient.py", line 1568, in RunOnDeps
 - work_queue.flush(revision_overrides, command, args, options=self._options)
 - File "D:\git\google\depot_tools\gclient_utils.py", line 1112, in run
 - self.item.run(*self.args, **self.kwargs)
 - File "D:\git\google\depot_tools\gclient.py", line 867, in run
 - file_list)
 - File "D:\git\google\depot_tools\gclient_scm.py", line 166, in RunCommand
 - return getattr(self, command)(options, args, file_list)
 - File "D:\git\google\depot_tools\gclient_scm.py", line 450, in update
 - self._Clone(revision, url, options)
 - File "D:\git\google\depot_tools\gclient_scm.py", line 965, in _Clone
 - os.path.join(self.checkout_path, '.git'))
 - File "D:\git\google\depot_tools\gclient_utils.py", line 158, in safe_rename
 - os.rename(old, new)
 - WindowsError: [Error 5]
 - Traceback (most recent call last):
 - File "D:\git\google\depot_tools\\fetch.py", line 353, in <module>
 - sys.exit(main())
 - File "D:\git\google\depot_tools\\fetch.py", line 348, in main
 - return run(options, spec, root)
 - File "D:\git\google\depot_tools\\fetch.py", line 342, in run
 - return checkout.init()
 - File "D:\git\google\depot_tools\\fetch.py", line 142, in init
 - self.run_gclient(*sync_cmd)
 - File "D:\git\google\depot_tools\\fetch.py", line 76, in run_gclient
 - return self.run(cmd_prefix + cmd, **kwargs)
 - File "D:\git\google\depot_tools\\fetch.py", line 66, in run
 - return subprocess.check_output(cmd, **kwargs)
 - File "D:\git\google\depot_tools\python276_bin\lib\subprocess.py", line 573, in check_output
 - raise CalledProcessError(retcode, cmd, output=output)
 - subprocess.CalledProcessError: Command '('D:\\git\\google\\depot_tools\\python276_bin\\python.exe', 'D:\\git\\google\\depot_tools\\gclient.py', 'sync', '--no-history')' returned non-zero exit status 1
 
这样的问题,主要是杀软拦截导致删除文件目录失败,禁用掉WinDefender就好了,其他杀软或许有类似的情况,请注意,参考https://bugs.chromium.org/p/chromium/issues/detail?id=464132)
3. 源码下载成功后,cd src,进入src目录;
五. 编译(最期待的时候到了):
1. 首先使用默认的编译方式吧,使用gn gen out/Default,会在src目录下创建out/Default目录,并配置些编译需要的文件;
2. 使用ninja -C out\Default chrome命令行编译chrome,此时需要等待漫长的时间;
ps:在使用ninja编译的时候,我这里出现了
ninja: Entering directory `out/Default'
ninja: error: '../../native_client/toolchain/mac_x86/pnacl_newlib/bin/x86_64-nacl-objcopy', needed by 'irt_x64/obj/ppapi/native_client/nacl_irt_debuglink.inputdeps.stamp', missing and no known rule to make it
这种类似的错误,在src目录下使用cmd执行gclient sync,顺利解决,参考https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/tQGuR7Ur0i8;
3. 编译好了,运行Default下的chrome.exe吧。
记录windows下编译chromium,备忘的更多相关文章
- windows下编译chromium浏览器的15个流程整理
		
编译chromium 系统为windows, 国内在windows上编译chromium的资料比较少, 我这篇文章只能作为参考, 记录我遇到的一些问题,因为chromium团队也会修改了代码,或者编译 ...
 - CEF中文教程(google chrome浏览器控件) -- Windows下编译Chromium
		
CEF中文教程(google chrome浏览器控件) -- CEF简介 2013-04-10 16:48 42928人阅读 评论(4) 收藏 举报 分类: CEF(2) 目录(?)[+] ...
 - Windows下编译vpx获得各个项目VS2010解决方案的步骤
		
最近研究了一下几种常见的视频编码器:x264,x265,vpx.本文简单记录一下它们的编译方法. x264,x265,vpx这三个开源的视频编码器可以说是当今“最火”的视频编码器.x264现在占据着H ...
 - 在Windows下编译FFmpeg详细说明
		
MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...
 - 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg
		
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
 - 在Windows下编译WebRTC
		
前言 这篇文章的目的在于为你节省生命中宝贵的10小时(甚至更多),或者浪费你10分钟.作为Google更新频繁的大型跨平台基础库,WebRTC的编译一直被人称为噩梦.如果恰巧你偏要在Windows下编 ...
 - [转] Windows下编译OpenSSL
		
简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...
 - Windows下编译objective-C
		
Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode 目录 ...
 - 如何在WINDOWS下编译BOOST C++库 .
		
如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25 写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0. 1)下载boost ...
 
随机推荐
- Algorithm partI  第2节课  Union−Find
			
发展一个有效算法的具体(一般)过程: union-find用来解决dynamic connectivity,下面主要讲quick find和quick union及其应用和改进. 基本操作:find/ ...
 - Linux笔记-Linux下编辑器的简介
			
在整个linux中,我们使用最多的编译器真的vim了,全名我也不说了,没有多大意义,我们就是通过它来写我们的代码的.如果你有强迫症的话,那么选择使用gedit我也是没话说的啦! 话说其实我也在使用一些 ...
 - 在ViewDidLoad中往导航栈推ViewController报错
			
Unbalanced calls to begin/end appearance transitions for <YZPMainViewController: 0x7fa04b4970f0& ...
 - hadoop学习笔记(一):hadoop生态系统及简介
			
一.hadoop1.x的生态系统 HBase:实时分布式数据库 相当于关系型数据库,数据放在文件中,文件就放在HDFS中.因此HBase是基于HDFS的关系型数据库.实时性:延迟非常低,实时性高. 举 ...
 - 问题集录--新手入门深度学习,选择TensorFlow 好吗?
			
新手入门深度学习,选择 TensorFlow 有哪些益处? 佟达:首先,对于新手来说,TensorFlow的环境配置包装得真心非常好.相较之下,安装Caffe要痛苦的多,如果还要再CUDA环境下配合O ...
 - 对.net事件的看法
			
对.net事件的看法 一.事件的本质 事件是软件系统里的两个子系统之间,或者两个模块之间,或者两个对象之间发送消息,并处理消息的过程.在面向对象的世界里,就可以统一认为是两个对象之间的行为. 两个对象 ...
 - 远程连接MongoDB数据库
			
不使用用户名和密码 安装MongoDB后,默认不使用用户名和密码即可在本地登录,如需远程登录,只要修改/bin/mongo.conf文件即可
 - IntelliJ IDEA 2018.3 安装+永久激活[Windows]
			
IntelliJ IDEA 作为一个优秀的Java开发环境,深受许多开发者喜爱,但是它的价格却贵得让人无法接受,这篇文章将介绍永久激活IntelliJ IDEA的方法(使用破解补丁). 系统环境:Wi ...
 - 第二章.JSP/Servlet及相关技术详解
			
JSP的4种基本语法: 1.JSP注释: <%-- JSP注释部分 --%> 2.JSP声明: <%! //声明一个整型变量 public int count; //声明一个方法 p ...
 - ES6学习笔记(四)-数值扩展
			
PS: 前段时间转入有道云笔记,体验非常友好,所以笔记一般记录于云笔记中,每隔一段时间,会整理一下, 发在博客上与大家一起分享,交流和学习. 以下: