Chromium 编译问题

Chromium 编译问题

  • 参考Mac系统编译环境准备 :
    本文在Mac系统编译完成

网络环境准备

  • 科学上网自备, 这里假定 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
  • $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
  • $ git clone https://github.com/ninja-build/ninja.git

配置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 编译问题)