美文网首页
Chromium 编译问题

Chromium 编译问题

作者: 一叶也知秋 | 来源:发表于2021-07-02 14:35 被阅读0次

    Chromium 编译问题

    网络环境准备

    • 科学上网自备, 这里假定 proxy为 http://127.0.0.1:1087 。
    • 打开 ~/.bash_profile ,加入如下内容
    function proxy_off(){
            unset http_proxy
            unset https_proxy
            unset ftp_proxy
            unset rsync_proxy
            echo -e "关闭代理"
    }
     
    function proxy_on() {
            export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
            export http_proxy="http://127.0.0.1:1087"  #注意,这里根据自己科学上网的具体情况修改
            export https_proxy=$http_proxy
            export ftp_proxy=$http_proxy
            export rsync_proxy=$http_proxy
            export HTTP_PROXY=$http_proxy
            export HTTPS_PROXY=$http_proxy
            export FTP_PROXY=$http_proxy
            export RSYNC_PROXY=$http_proxy
            echo -e "开启代理"
    }
    
    • 打开一个终端 , 根据自己情况建立目录, /xxxx/xxxxx/browser

    $ source ~/.bash_profile

    之后可以根据需要运行proxy_on / proxy_off 打开和关闭科学上网的代理。

    $ proxy_on

    • 在/xxxx/xxxxx/browser 下, 执行 git clone

    配置depot_tools和ninja环境。

     $  export PATH=/xxxx/xxxxx/browser/depot_tools:$PATH
     $  cd ninja && ./configure.py --bootstrap && cd ..
     $  export PATH=/xxxx/xxxxx/browser/ninja:$PATH
    
    • 为了确保Unicode文件名不会被HFS损坏, git config 配置
    • git config --global http.postBuffer 524288000
    • git config --global core.precomposeUnicode true

    自此,环境准备已完成。
    分别进入Chromium编译和V8单独编译

    Chromium编译 -- fetch 代码

    $ mkdir chromium && cd chromium
    $ fetch chromium
    
      • 需要注意的是,由于Chromium项目庞大而且历史悠久,直接使用$ fetch chromium 耗时漫长,初次使用可以通过 $ fetch --no-history chromium, 待到项目编译结束后根据需要,使用$ git fetch --unshallow 得到全部历史记录文件。
      • 由于网络中断等各种原因导致的fetch中断,可以用$ gclient sync --no-history 断点续传 直至结束。 这个过程根据网络状况 ,几小时到二十几小时不等。
      • python3的问题,fetch chromium --> gclient sync. --> gclient runhooks, 其中runhook调用了python3 所以刚安装的python3的需要应用程序中python3 里 install certficate 如图:
        python3
        ref https://groups.google.com/g/v8-dev/c/ZCH5jyVHAUA

    Chromium编译Build

    • 进入Chromium下的 src目录
    $ cd src
    
    • 在Chromium下建立安装目录
    $ gn gen out/Default
    

    这里的Default 可以自己命名。

    • Build命令
    $ autoninja -C out/Default chrome
    

    这个过程根据PC性能,用时几小时到十几小时不等.
    另外新版的arm芯片Mac需要一些额外的步骤,可直接参考官网
    完成后在 out/Default 目录下有各类Build好的文件 如图

    Build结果

    Chromium编译 -- Xcode 环境准备

    • 首先要明确的是Chromium对于Xcode这样的IDE支持并不好,不过仍然不妨碍使用Xcode作为一个IDE环境,至少可以用来读代码和编辑。 todo 不过编译和调试还是要使用后面所提示的办法。
    gn gen out/gn --ide=xcode
    
    然后生成了这个目录下的文件 xcode编译环境
    $ open out/gn/all.xcodeproj
    

    打开xcode后 面临漫长的indexing。

    ccache

    编译缓存问题的安装

    • brew install ccache

    debug

    ref: gdb lldb调试软件的使用 todo

    Build V8

    v8是独立于Chromium项目的javascript引擎项目

    环境准备

    proxy 代理设置, deptool ninja等环境设置参考前文。

    拉取代码

    mkdir jsEngine # 此处自定义
    cd v8
    fetch v8
    cd v8
    

    alias

    alias gm=/xxxx/xxxxx/jsEngine/v8/tools/dev/gm.py
    

    tools/dev/v8gen.py x64.debug
    ninja -C out.gn/x64.debug

    编译

    然后如果只是想编译d8的话(这样更快),最后一个命令后面加个d8的参数ninja -C out.gn/x64.debug d8。

    编译release版本的话,最后两行改成这个。

    tools/dev/v8gen.py x64.release
    ninja -C out.gn/x64.release

    alias gm=tools/dev/gm.py
    gm arm64.debug

    相关文章

      网友评论

          本文标题:Chromium 编译问题

          本文链接:https://www.haomeiwen.com/subject/cruhultx.html