天天看點

成功編譯google chrome

轉自:http://www.xici.net/b657188/d84498758.htm 這篇文章适合老一點的chrome,現在已經編譯不過去了,不過裡面對chrome的介紹不錯。

找啊找啊找,原來Windows SDK Configuration tool 工具有一個Bug,具體請看:

http://blogs.msdn.com/windowssdk/archive/2008/06/30/winsdk-bug-notification-sdk-config-tool-appears-to-work-but-fails.aspx

二:開發環境準備完畢,接下來下載下傳Chrome的源代碼:

   1. 下載下傳depot_tools_win.zip,下完解壓到一個目錄,假設解壓後的目錄是:C:/depot_tools。

   2. 把depot_tools的路徑加入PATH環境變量:我的電腦|屬性|進階|環境變量。

   3. 建立一個存放代碼的檔案夾,假設是:c:/trunk;運作cmd并将目前路徑定位到該檔案夾: cd c:/trunk。

   4. 在cmd裡執行:gclient config http://src.chromium.org/svn/trunk/src。

   5. 執行完後,再執行:gclient sync,此時就開始檢出Chrome的代碼,需要很長的時間。

經過很長的時間(我下載下傳了3個小時左右),代碼終于取下來了,現在開始建構:

   1. 打開c:/trunk/src/chrome/chrome.sln。

   2. 會看到app目錄下有一個chrome_exe工程,建構它就行了。

耐心地等待建構(我建構了1個半小時,看來我的本本性能還是不錯的),幸運的話,目标檔案會生成在:c:/trunk/src/chrome/debug

詳細編譯通路見:http://sites.google.com/a/chromium.org/dev/developers/how-tos/build-instructions-windows

三:關于chrome的核心引擎

    google chrome用的是WebKit核心引擎,看來firefox日子要開始不好過了。

WebKit Open Source Project 核心引擎的前世今生

WebKit 的前身是 KDE 小組的 KHTML。Apple将 KHTML 發揚光大,推出了裝備 KHTML 改進型的 WebKit 引擎的浏覽器 Safari,獲得了非常好的反響。

WebKit 引擎比 Gecko 引擎更受程式員歡迎的原因,除了其引擎的高效穩定,相容性好外,其源碼結構清晰,易于維護,是一個重要的原因。而 Gecko 的可維護性就差多了。我在 2008年6月時候,曾編譯 Gecko 引擎,準備做一個基于 Gecko 的 Embed 應用程式,但文檔缺乏、結構欠清晰,折騰了一星期之後,最終不得不承認自己水準有限,放棄了事。

現在浏覽器的核心引擎,基本上是三分天下:

  • Trident: IE 以Trident 作為核心引擎。
  • Gecko: Firefox 是基于 Gecko 開發。
  • WebKit: Safari, Google Chrome 基于 Webkit 開發。

WebKit 核心在手機上的應用十分廣泛,例如 Google 的手機 Gphone、 Apple 的 iPhone, Nokia’s Series 60 browser 等所使用的 Browser 核心引擎,都是基于 WebKit。

下面是 WebKit 首頁關于 WebKit 的介紹:http://www.xiaohui.com/dev/server/20080903-webkit-opensource-project.htm

四:chrome涉及開源項目

  Google Chrome是一個優秀的開源的浏覽器,其開發過程大量地使用了網上現在成熟穩定的開源代碼,目前Chrome所涉及25個開源代碼:

1、Google Breakpad

/src/breakpad

    開源的跨開台程式崩潰報告系統。

2、Google URL

    /src/googleurl

     Google小巧的URL解析整理庫。

3、Skia

/src/skia

    矢量圖引擎。

4、Google v8

    /src/v8

    Google開源的JavaScript引擎。V8實作了ECMA-262第三版的ECMAScript規範,可運作于Windows XP 和 Vista, Mac OS X 10.5 (Leopard), 及 Linux等基于IA-32 或 ARM 的系統之上。V8可單獨運作也可嵌入到任何C++程式中。

5、Webkit

/src/webki

    開源的浏覽器引擎

6、Netscape Portable Runtime (NSPR)

/src/base/third_party/nspr

    Netscape Portable Runtime (NSPR) 提供了系統級平台無關的API及類似libc的函數。

7、Network Security Services (NSS)

/src/base/third_party/nss

    Network Security Services (NSS) 一套用于支援伺服器端與用戶端安全開發的跨平台函數庫。程式通過NSS可支援SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 認證及其它一些安全标準。

8、Hunspell

/src/chrome/third_party/hunspell

    Spell checker and morphological analyzer library and program designed for languages with rich morphology and complex word compounding or character encoding.

9、Windows Template Library

/src/chrome/third_party/wtl

    用于開發Windows程式與UI元件的C++ library。WTL擴充了ATL (Active Template Library) 并提供一套用于controls, dialogs, frame windows, GDI objects等開發的類。

10、Google C++ Testing Framework

    /src/testing/gtest

    Google用于編寫C++測試的基于xUnit架構的架構,可用于多種平台上:Linux, Mac OS X, Windows, Windows CE, and Symbian。支援自動測試發現,有一套豐富的Assertions斷言,用于可自定義斷言,death tests, fatal and non-fatal failures, various options for running the tests, and XML test report generation.

11、bsdiff 與 bspatch

/src/third_party/bsdiff 及 /src/third_party/bspatch

    bsdiff 與 bspatch 用于為二進制檔案生成更新檔。

12、bzip2

/src/third_party/bzip2

    bzip2使用Burrows-Wheeler block sorting text compression 算法與Huffman編碼壓縮檔案。

13、International Components for Unicode (ICU)

    /src/third_party/icu38

    ICU是一套成熟并被廣泛使用的C/C++ 及 Java 庫,可為軟體提供Unicode與全球化支援。

14、libjpeg

/src/third_party/libjpeg

    用于處理JPEG (JFIF)圖像格式的庫。

15、libpng

/src/third_party/libpng

    PNG圖像格式庫。支援絕大部分的PNG特性,可擴充。已經被廣泛地使用了13年以上了。

16、libxml

/src/third_party/libxml

    C語言的XML解析庫。

17、libxslt

/src/third_party/libxslt

    C語言的XSLT庫。

18、LZMA

/src/third_party/lzma_sdk

    LZMA為7-Zip軟體中7z格式壓縮所使用的壓縮算法,有很好的壓縮效果。

19、stringencoders

/src/third_party/modp_b64

    一系列高性能的c-string轉換函數,比如:base 64 encoding/decoding。通常比其标準實作快兩倍以上。

20、Netscape Plugin Application Programming Interface (NPAPI)

/src/third_party/npapi

    多種浏覽器使用的跨平台插件架構。

21、Pthreads-w32

/src/third_party/pthread

    用于編寫多線程程式的API

22、SCons - a software construction tool

/src/third_party/scons

    開源的軟體建構工具——下一代的編譯工具。可以認為SCons是改進過的跨平台配上autoconf/automake與ccache的Make工具的子系統。

23、sqlite

/src/third_party/sqlite

    大名鼎鼎的嵌入式資料庫引擎。自管理、零配置、無需伺服器、支援事務。

24、TLS Lite

/src/third_party/tlslite

     SSL 3.0, TLS 1.0, and TLS 1.1的Python免費實作庫。TLS Lite支援這些安全驗證方式:SRP, shared keys, and cryptoIDs in addition to X.509 certificates。注:Chrome并不包涵Python。TLS Lite用于Chrome開發過程中的代碼覆寫、依賴檢查、網頁加載時間測試及生成html結果比較等。

25、zlib

/src/third_party/zlib

    zlib為一套用于任意平台與機器的無損資料壓縮的庫,它免費、自由、無任何法律專利問題。

五:文章連結

  • Chrome源碼剖析
  • Google Chrome 的核心引擎 WebKit 介紹
  • WinSDK bug notification: SDK Config Tool appears to work but fails
  • Build Instructions (Windows)
  • cxjnet的專欄

    六:hrome相關連結

  • chromebbs
  • Chromium Blog
  • 谷歌Chrome中文站
  • 谷歌浏覽器中文論壇

繼續閱讀