編譯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_tools\gsutil.py
depot_tools\external_bin\gsutil\gsutil_4.15\gsutil\third_party\httplib2\python2\httplib2\__init__.py
depot_tools\external_bin\gsutil\gsutil_4.13\gsutil\third_party\httplib2\python2\httplib2\__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 out\Default
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