1. 程式人生 > 其它 >輕鬆編譯google chrome瀏覽器最新穩定版原始碼

輕鬆編譯google chrome瀏覽器最新穩定版原始碼

輕鬆編譯google chrome瀏覽器最新穩定版原始碼
ciml 2010-04-26 22:55:00 13988 收藏
分類專欄: Web Core 文章標籤: google chrome 瀏覽器 windows python tools
版權
Web Core
專欄收錄該內容
4 篇文章 0 訂閱
訂閱專欄
寫在開頭

正如一位網友說的,在這個充滿大量工業垃圾程式碼的環境,google 開源 chromium的出現無疑給這樣的環境添加了幾分藝術氣息。我對此深有同感,確實,在這個浮躁的大環境下,我們產出的大部分程式程式碼,如果要和google這樣的頂尖技術公司產出的程式碼相比,說我們大部分時間都在編寫垃圾程式碼是不為過的。

但我們不應該為此就感到悲觀,畢竟象google這樣的公司集聚的是全世界最頂尖的技術天才。我等凡人怎能和他們相比,就我個人而言只能抱著虔誠的心仰視他們的‘藝術作品’。作為技術人員,雖然不是每個人都可以成為天才,但並不妨礙我們站在巨人的肩上讓自己看得更遠一些。而現在的問題僅僅是有沒有某種內因或者外因促使你這樣去做!

如果你已經厭倦了每天充斥在你眼前大量的‘垃圾’程式碼,不妨把浮躁的心平靜下來欣賞一下‘藝術品’。google chrome瀏覽器原始碼是一個很好的開始,雖然其程式碼工程非常之龐大(可能在你我看來),但這並沒有影響它的優雅性。它是一座‘金礦’,我們的任務是做好發掘工作。
編譯步驟

做好發掘工作的第一步就是獲取程式碼並能成功編譯除錯,我這裡只談在windows環境下的編譯,我的作業系統是Windows Server 2008 企業版,其他windows 環境應該沒有什麼大的區別。其實我寫此文的目的可能更多的是加深印象,做個備忘,因為官方描述的編譯過程已經比較清楚了,如果你對官方的文件描述更感興趣,請參考這裡。

注意要下載程式碼並完全編譯請準備至少10G空閒硬碟空間,你的機器配置越高越好。機器配置的好壞直接決定你等待編譯的時間長短。

我這裡僅僅是把步驟簡化整理如下:(注意準備至少10G的)

1.安裝Visual Studio 2008、安裝VS2008 Service Pack 1、安裝vs2008 sp1補丁的補丁KB967631; KB960075; KB958842; KB957912 和KB971092.注意KB971092補丁比較大,共300多M。

2.安裝Windows 7 SDK,最好下載ISO映象版,要小很多。注意Windows 6.1 SDK 在39982的修訂版本之後將不再支援。專案版本和日值情況可以到這裡檢視。安裝完成後,在開始選單中選擇Windows SDK Configuration Tool和vs2008整合整合。

3.獲取安裝depot_tools工具,這是google自己用python封裝的svn程式碼獲取客戶端工具,下載depot_tools.zip並解壓到比如d:/depot_tools目錄。將depot_tools目錄路徑加到PATH環境變數。然後新建環境變數GYP_MSVS_VERSION=2008,這個環境變數的目的就是最終生產vs2008的工程型別。

4.下載程式碼,在比如D:建立一個chromium的目錄,然後命令列cd到該目錄,明確你需要下載的版本,比如在我寫此文的時候官方最新發布的穩定版為4.1.249.1059,我要下載此版本的原始碼,先在d:/chromium目錄執行

gclient config http://src.chromium.org/svn/releases/4.1.249.1059

該命令並沒有真正下載程式碼,而只是做一個客戶端配置工作,注意由於第一次執行gclient,依賴的python和svn工具可能還沒有安裝,此時gclient會自動下載並安裝,因此你不必單獨事先安裝svn客戶端和python。你可以在視窗上看到正在安裝python和svn的進度提示,你只需要等待,如果中途出錯,只需要再次執行上述命令即可。注意gclient config命令只需要執行一次,除非你需要同步其他版本的程式碼而改變了配置路徑。該命令完成之後,再執行

gclient sync --force

就開始同步下載程式碼了,現在的任務就是等待,根據你的網路情況,可能需要下載半天到一天以上不等,如果中途出錯,只需要重新執行gclient sync –-force,會自動接著上次的下載。注意一定要加--force引數選項,否則可能下載不齊全。

5.編譯程式碼,如果一切順利,gclient sync –force執行完後,所有程式碼完全成功下載,並且自動生成了vs2008的解決方案工程檔案,現在直接開啟d:/chromium/src/chrome/chrome.sln解決方案檔案,把chrome設定為啟動工程,在chrome工程上點選右鍵選擇build開始編譯即可。根據你機器的配置情況,需要等待20分鐘到2個小時以上不等,我在新購T410(I7 CUP、4G記憶體、7200轉500G硬碟)筆記本上,編譯了40分鐘。

6.執行chrome,編譯完成後,總共有將近200個依賴工程,最終會在chrome/debug目錄下生成chrome.exe和相關檔案。在vs2008中直接F5執行,然後在瀏覽器位址列輸入‘about:’ 回車核實版本號。如果顯示:

Chromium
4.1.249.1059 (開發人員內部版本 44723)

WebKit
532.5

V8
1.3.18.22

User Agent
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1059 Safari/532.5

恭喜你,版本完全正確!注意我是以寫此文的時候的最新版為例,你只需要和當時最新發布的安裝版chrome對比即可。
總結

整個過程是很順利的,google把相關的工作做得非常完美了,不需要涉及到大量複雜的配置工作。chrome的開源算是google對開源界一個很大的貢獻吧。gclient是google自己封裝的工具,其本質是呼叫svn,額外的工作主要在於google程式碼倉庫用DEPS檔案來描述專案版本之間的依賴關係,gclient會解析DEPS檔案並下載對應版本的依賴庫,這是一個迴圈過程。有興趣可以參考depot_tools目錄下相關python指令碼的實現過程。如果你想下載最新開發版,注意不要直接配置為http://src.chromium.org/svn/trunk/src,這個下載下來很可能無法成功編譯,因為主幹上的程式碼隨時在提交修改,沒有release,所以一定要下載有release的,比如5.0.387.0。整個工程非常龐大,由此可以看出做一個真正優秀的瀏覽器是多麼不容易。程式碼中包括了webkit html解析、css解析、v8 js引擎實現、skia圖形處理、安全技術、網路、資料庫、NPAPI外掛框架、擴充套件框架、多程序、多執行緒等等技術主題,如果你對某方面感興趣,不妨對這些藝術性的程式碼進行研究學習。當然對這樣龐大的開源專案進行分析學習是要講方法和毅力的,後續我也會對此作相關的分析和討論。
————————————————
版權宣告:本文為CSDN博主「ciml」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/ciml/article/details/5531876