編譯Chrome詳細步驟
文章來源:http://blog.csdn.net/allendale/article/details/9262833
參考:http://dev.chromium.org/developers/how-tos/build-instructions-windows
1 Chrome的代碼量巨大,下載編譯的過程一出錯,可能就需要回頭從來。工欲善其事,必先利其器,推薦電腦內存至少8G,否則會難以忍受的慢,當然是64位系統,您還需要設置顯示文件後綴名。如圖,將勾選去掉
2 然後安裝Visual Studio 2010 Uitimate,安裝路徑默認。安裝最全的,以後省心,然後順序安裝:
- VS2010 SP1
- Windows 8 SDK.
- June 2010 DirectX SDK.
Usage: gclient.py <command> [options]
Commands are:
cleanup Cleans up all working copies.
config Create a .gclient file in the current directory.
diff Displays local diff for every dependencies.
fetch Fetches upstream commits for all modules.
help Prints list of commands or help for a specific command.
hookinfo Output the hooks that would be run by `gclientrunhooks`
pack Generate a patch which can be applied at the root of the tree.
recurse Operates on all the entries.
revertRevert all modifications in every dependencies.
revinfo Output revision info mapping for the client and its dependencies.
runhooks Runs hooks for files that have been modified in the local working copy.
status Show modification status for every dependencies.
sync Checkout/update all modules.
update Alias for the sync command. Deprecated.
Prints list of commands or help for a specific command.
Options:
--version show program‘s version number and exit
-h, --help show this help message and exit
-j JOBS, --jobs=JOBS Specify how many SCM commands can run in parallel;
default=8
-v, --verbose Produces additional output for diagnostics. Can be
used up to three times for more logging info.
--gclientfile=CONFIG_FILENAME
Specify an alternate .gclient file
--spec=SPEC create a gclient file containing the provided string.
Due to Cygwin/Python brokenness, it probably can‘t
contain any newlines.
代表depot_tools配置成功。 5下載chrome源碼 從命令行切換到工程目錄(D:\ChromiumTrunk), 輸入:gclient config https://src.chromium.org/chrome/trunk/src 這時候會生成一個文件.gclient,用記事本打開它, solutions = [{ "name" : "src",
"url" : "https://src.chromium.org/chrome/trunk/src",
"deps_file" : "DEPS",
"managed" : True,
"custom_deps" : {
"src/webkit/data/layout_tests/LayoutTests":None,
"src/third_party/WebKit/LayoutTests": None,
"src/chrome_frame/tools/test/reference_build/chrome_win": None,
"src/chrome/test/data/perf/canvas_bench": None,
"src/chrome/test/data/perf/frame_rate/content": None,
"src/chrome/tools/test/reference_build/chrome_mac": None,
"src/chrome/tools/test/reference_build/chrome_win": None,
"src/chrome/tools/test/reference_build/chrome_linux": None,
‘src/chrome/test/data/layout_tests/LayoutTests/fast/workers‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/platform/chromium/fast/workers‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/fast/js/resources‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-mac/http/tests/workers‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/http/tests/resources‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/storage/domstorage‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/fast/events‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/http/tests/workers‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/http/tests/xmlhttprequest‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-win/storage/domstorage‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/http/tests/appcache‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-win/fast/events‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-mac/fast/events‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-mac/storage/domstorage‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/websocket/tests/workers‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-win/fast/workers‘: None,
‘src/chrome/test/data/layout_tests/LayoutTests/platform/chromium-win/http/tests/workers‘: None,
‘o3d/samples‘: None,
},
"safesync_url": "",
},
]
cache_dir = None 藍色區域為需要增加的內容。 弄好了這些,才能下載代碼,在命令行輸入 gclient sync。然後下載代碼。經過很長時間後,代碼下載完。 6 切到一個指定版本 在工程目錄下運行:gclient config https://src.chromium.org/chrome/releases/27.0.1453.116,意思是切到一個指定的release版本。之後,繼續修改.gclient文件,仍然增加藍色的內容。因為這時候.gclient文件被重寫。 然後再次運行 gclient sync,這時候會繼續下載一些文件,等待文件下載完畢。 7 生成工程文件,編譯 運行 gclient runhooks --force,解析生成sln文件,然後打開編譯。 chrome涉及的開源項目
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詳細步驟