Chromium 編譯問題
-
參考Mac系統(tǒng)編譯環(huán)境準備 :
本文在Mac系統(tǒng)編譯完成
網(wǎng)絡(luò)環(huán)境準備
- 科學(xué)上網(wǎng)自備, 這里假定 proxy為 http://127.0.0.1:1087 郑藏。
- 打開 ~/.bash_profile 脐往,加入如下內(nèi)容
function proxy_off(){
unset http_proxy
unset https_proxy
unset ftp_proxy
unset rsync_proxy
echo -e "關(guān)閉代理"
}
function proxy_on() {
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
export http_proxy="http://127.0.0.1:1087" #注意惊科,這里根據(jù)自己科學(xué)上網(wǎng)的具體情況修改
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 "開啟代理"
}
- 打開一個終端 , 根據(jù)自己情況建立目錄理张, /xxxx/xxxxx/browser
$ source ~/.bash_profile
之后可以根據(jù)需要運行proxy_on / proxy_off 打開和關(guān)閉科學(xué)上網(wǎng)的代理慷垮。
$ proxy_on
- 在/xxxx/xxxxx/browser 下, 執(zhí)行 git clone
配置depot_tools和ninja環(huán)境句灌。
$ 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
自此欠拾,環(huán)境準備已完成。
分別進入Chromium編譯和V8單獨編譯
Chromium編譯 -- fetch 代碼
$ mkdir chromium && cd chromium
$ fetch chromium
- 需要注意的是骗绕,由于Chromium項目龐大而且歷史悠久藐窄,直接使用
$ fetch chromium
耗時漫長,初次使用可以通過$ fetch --no-history chromium
酬土, 待到項目編譯結(jié)束后根據(jù)需要荆忍,使用$ git fetch --unshallow
得到全部歷史記錄文件。
- 需要注意的是骗绕,由于Chromium項目龐大而且歷史悠久藐窄,直接使用
- 由于網(wǎng)絡(luò)中斷等各種原因?qū)е碌膄etch中斷撤缴,可以用
$ gclient sync --no-history
斷點續(xù)傳 直至結(jié)束刹枉。 這個過程根據(jù)網(wǎng)絡(luò)狀況 ,幾小時到二十幾小時不等屈呕。
- 由于網(wǎng)絡(luò)中斷等各種原因?qū)е碌膄etch中斷撤缴,可以用
- python3的問題微宝,fetch chromium --> gclient sync. --> gclient runhooks, 其中runhook調(diào)用了python3 所以剛安裝的python3的需要應(yīng)用程序中python3 里 install certficate 如圖:
python3
ref https://groups.google.com/g/v8-dev/c/ZCH5jyVHAUA
- python3的問題微宝,fetch chromium --> gclient sync. --> gclient runhooks, 其中runhook調(diào)用了python3 所以剛安裝的python3的需要應(yīng)用程序中python3 里 install certficate 如圖:
Chromium編譯Build
- 進入Chromium下的 src目錄
$ cd src
- 在Chromium下建立安裝目錄
$ gn gen out/Default
這里的Default 可以自己命名。
- Build命令
$ autoninja -C out/Default chrome
這個過程根據(jù)PC性能虎眨,用時幾小時到十幾小時不等.
另外新版的arm芯片Mac需要一些額外的步驟芥吟,可直接參考官網(wǎng)。
完成后在 out/Default
目錄下有各類Build好的文件 如圖
Build結(jié)果
Chromium編譯 -- Xcode 環(huán)境準備
- 首先要明確的是Chromium對于Xcode這樣的IDE支持并不好专甩,不過仍然不妨礙使用Xcode作為一個IDE環(huán)境,至少可以用來讀代碼和編輯钉稍。 todo 不過編譯和調(diào)試還是要使用后面所提示的辦法涤躲。
gn gen out/gn --ide=xcode
然后生成了這個目錄下的文件xcode編譯環(huán)境
$ open out/gn/all.xcodeproj
打開xcode后 面臨漫長的indexing。
ccache
編譯緩存問題的安裝
- brew install ccache
debug
ref: gdb lldb調(diào)試軟件的使用 todo
Build V8
v8是獨立于Chromium項目的javascript引擎項目
環(huán)境準備
proxy 代理設(shè)置贡未, deptool ninja等環(huán)境設(shè)置參考前文种樱。
拉取代碼
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的參數(shù)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