chromium瀏覽器開發系列第二篇:如何編譯最新chromium原始碼
說一下為什麼這麼晚才發第二篇,上週和這周department的工作太多了,晚上都是十點半從公司出發,回家以後實在沒有多餘的精力去摸鍵盤了。所以請大家包涵!
上期回顧:
chromium原始碼下載:
-
找個靠譜的vpn(我試過了,網上說的不用vpn拿程式碼的都不靠譜);
-
獲取depot_tools,解壓,設定環境變數;
-
gclient獲取python和git,svn,設定環境變數;
-
fetch–nohooks chromium –nosvn=true獲取原始碼;
-
gclientsync --force –nohooks同步到最新
上邊的python和git,也可以通過手動安裝,只要環境變數設定好了就可以。
環境配置:
獲取程式碼的最後一步是獲取編譯環境也就是Visual Studio 2013,上面所有的都成功以後,執行gclient runhooks就會把編譯需要的vs2013的檔案下載到本地,儲存在depot_tools\win_toolchain\vs2013_files路徑下,主要檔案是編譯需要的庫檔案。
在windows上編譯chromium的官網幾個說明:
1.你必須把你的windows系統區域設定為英文,否則編譯時會發生錯誤:"The file contains a character that cannot berepresented in the current code page."這個問題在不切換語言的情況下也可以解決。請往下看。
2.因為之前的Visual Studio Express(免費版)存在一些問題,微軟也在update4中做了修復,所以現在官網說明用Visual Studio 2013 Update4(Community版或者Professional版)來編譯,其他的版本不支援。另外windows系統版本必須是win7 64位以後的版本,32位的已經不支援了。
另外一些說明:
選擇編譯的版本:
首先切換至src目錄下,列出所有版本的標籤,下面的命令將標籤記錄到tags.txt文字中:git tag >>tags.txt 2>&1
使用notepad++開啟後如下,只截取了最新
大家可以切換到某個tag進行編譯,命令和切換到分支相同,使用如下命令:
git checkout -b chrome_43.0.2355.2_local_branch43.0.2355.2
建立本地分支chrome_43.0.2355.2_local_branch並切換到遠端43.0.2355.2tag上
通過git branch檢視是否成功:
同步程式碼:
gclient sync --nohooks --with_branch_heads --with_tags --outpu
t-json="log.json"–jobs 16
使用--nohooks可以減少每次都檢查編譯環境等資訊。
編譯:
1)生成工程,生成可以用vs2013開啟的sln,方便之後除錯使用。寫成批處理檔案執行:
set GYP_MSVS_VERSION=2013
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=component=shared_library
set PATH=C:\depot_tools\python276_bin\;C:\depot_tools\;
python.exe src/build/gyp_chromiumsrc/chrome/chrome.gyp >>log.txt 2>&1
2)編譯工程
set PATH=C:\depot_tools\;
ninja -C src\out\debug chrome>>log.txt 2>&1
以上兩步把生成的log放在log.txt中,方便檢視。
說明:
1.set GYP_GENERATORS=msvs-ninja,ninja
最新程式碼生成工程時,會因為msvs-ninja無法開啟一些檔案,應該影響不大
2.set GYP_DEFINES=branding=Chromium proprietary_codecs=1 buildtype=Dev
優化設定,可以設定
3.set DEPOT_TOOLS_WIN_TOOLCHAIN=0
設定為0是讓gclient不要自動去構建環境,使用本機現有環境,可能修改的地方比較多,例如設定set GYP_DEFINES=windows_sdk_path="C:\Program Files(x86)\Windows Kits\8.0",一些json檔案的路徑等等。預設為0.
由於編譯chromium原始碼對warning要求很嚴格,所以我列出較重要的warning的解決方法:
1.針對編碼問題,和語言問題。
解決方法:最新版本已經將waring4996包含其中,但是沒有4819,加上它,會解決很多麻煩。
在src\build\common.gypi檔案中增加:
附上官方關於編譯引數的說明:
線上檢視版本號的地址:
http://omahaproxy.appspot.com/
第一時間獲得部落格更新提醒,以及更多技術資訊分享,歡迎關注個人微信公眾平臺:程式設計師互動聯盟(coder_online),掃一掃下方二維碼或搜尋微訊號coder_online即可關注,我們可以線上交流。
摘自:http://my.oschina.net/u/2335812/blog/394003