zoukankan      html  css  js  c++  java
  • windows下编译chromium浏览器的15个流程整理

      编译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);

            

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

           

        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_toolsgsutil.py

    depot_toolsexternal_bingsutilgsutil_4.15gsutil hird_partyhttplib2python2httplib2\__init__.py

    depot_toolsexternal_bingsutilgsutil_4.13gsutil hird_partyhttplib2python2httplib2\__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, 重新同步;

                

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

    gclient runhooks

        12: 生成BUILD.gn文件:

    gn gen outDefault

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

    ninja -C out/Default chrome

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

            

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

          

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

          

      参考:

        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的方式实现翻墙, 会出现验证的问题,  导致python和git同步文件失败的情况

        不要使用别人下载好的项目,  因为chromium这个项目非常大, 编译会涉及到操作系统, 环境, 编译工具, chromium的版本, 以及翻墙, 文件下载失败, 验证....各种问题, 自己能翻墙下就去下

        建议大家别看网络上的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 

  • 相关阅读:
    Java LinkedList 源码剖析
    Java并发编程:线程池的使用
    Java 线程池的原理与实现
    多线程JAVA篇(一)
    软件开发中会用到的图
    linux文件名匹配——通配符使用
    XModem协议
    dmesg 命令七种用法
    定位精度单位CEP、RMS、2DRMS常识
    5G NR 技术简介
  • 原文地址:https://www.cnblogs.com/diligenceday/p/5747879.html
Copyright © 2011-2022 走看看