chromium瀏覽器開發系列第二篇:如何編譯最新chromium源碼

說一下爲什麼這麼晚才發第二篇,上週和這周department的工作太多了,晚上都是十點半從公司出發,回家以後實在沒有多餘的精力去摸鍵盤了。所以請大家包涵!

上期回顧:

chromium源碼下載:

1.找個靠譜的***(我試過了,網上說的不用***拿代碼的都不靠譜);

2.獲取depot_tools,解壓,設置環境變量;

3.gclient獲取python和git,svn,設置環境變量;

4.fetch–nohooks chromium –nosvn=true 獲取源碼;

5.gclientsync --force –nohooks 同步到最新

上邊的python和git,也可以通過手動安裝,只要環境變量設置好了就可以。


環境配置:

獲取代碼的最後一步是獲取編譯環境也就是Visual Studio 2013,上面所有的都成功以後,運行gclient runhooks就會把編譯需要的vs2013的文件下載到本地,存儲在depot_tools\win_toolchain\vs2013_files路徑下,主要文件是編譯需要的庫文件。

211524_0M0D_2335664.png

211624_euOk_2335664.png

在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位的已經不支持了。

另外一些說明:

211636_crvI_2335664.png


選擇編譯的版本:

首先切換至src目錄下,列出所有版本的標籤,下面的命令將標籤記錄到tags.txt文本中:git tag >>tags.txt 2>&1

使用notepad++打開後如下,只截取了最新tag:

211649_QOoo_2335664.png


大家可以切換到某個tag進行編譯,命令和切換到分支相同,使用如下命令:

git checkout -b chrome_43.0.2355.2_local_branch 43.0.2355.2

創建本地分支chrome_43.0.2355.2_local_branch並切換到遠程43.0.2355.2tag上

通過git branch查看是否成功:

211702_MIZ5_2335664.png

同步代碼:

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文件中增加:

211827_CkBu_2335664.png


附上官方關於編譯參數的說明:

211838_ZgHj_2335664.png

211838_IJqW_2335664.png

在線查看版本號的地址:

http://omahaproxy.appspot.com/

如果有興趣,請看下一篇,chromium的目錄結構:

http://my.oschina.net/u/2335664/blog/397663


之後我會陸續推出關於chromium的一些列文章,請大家繼續關注。

如果大家對本系列文章有疑問,可以直接在公衆號留言,小編第一時間聯繫原創作者幫你耐心解答。

技術人員都有自己的情懷,深陷其中而不被理解,歡迎關注個人微信公衆平臺:程序員互動聯盟(coder_online),一個開發人員的家,來訴說自己的故事。

27225517_4bEO.jpg


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章