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
配置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
得到全部历史记录文件。
- 需要注意的是,由于Chromium项目庞大而且历史悠久,直接使用
- 由于网络中断等各种原因导致的fetch中断,可以用
$ gclient sync --no-history
断点续传 直至结束。 这个过程根据网络状况 ,几小时到二十几小时不等。
- 由于网络中断等各种原因导致的fetch中断,可以用
- python3的问题,fetch chromium --> gclient sync. --> gclient runhooks, 其中runhook调用了python3 所以刚安装的python3的需要应用程序中python3 里 install certficate 如图:
ref https://groups.google.com/g/v8-dev/c/ZCH5jyVHAUA
- python3的问题,fetch chromium --> gclient sync. --> gclient runhooks, 其中runhook调用了python3 所以刚安装的python3的需要应用程序中python3 里 install certficate 如图:
Chromium编译Build
- 进入Chromium下的 src目录
$ cd src
- 在Chromium下建立安装目录
$ gn gen out/Default
这里的Default 可以自己命名。
- Build命令
$ autoninja -C out/Default chrome
这个过程根据PC性能,用时几小时到十几小时不等.
另外新版的arm芯片Mac需要一些额外的步骤,可直接参考官网。
完成后在 out/Default
目录下有各类Build好的文件 如图
Chromium编译 -- Xcode 环境准备
- 首先要明确的是Chromium对于Xcode这样的IDE支持并不好,不过仍然不妨碍使用Xcode作为一个IDE环境,至少可以用来读代码和编辑。 todo 不过编译和调试还是要使用后面所提示的办法。
gn gen out/gn --ide=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