新環境配置編譯chromium

最近要搞chromium,雖然之前下載、編譯過一次兩次,但是都沒有時間認真看代碼(拖延症患者)。後來機器上又裝了其它東西,也不知道是不是因爲裝了vs2005的原因,現在把以前拉的代碼拿過來就編譯不過,需要每個工程都去修改platform toolset,把它從v100修改爲windows7.1,面對chromium650個工程,逐個修改太累,所以重裝系統再來一遍,好在SSD硬盤夠快。
  一、安裝環境流程如下

1、安裝win7 64位 專業版。(C盤剩下33G空間)

2、安裝驅動\安裝工作常用軟件(壓縮、輸入法、IM...)

3、安裝vs2010 Ultimate (網上只下載到這個2010版本)

4、安裝vs2010SP1補丁(雖然使用了離線安裝包,但還是很慢)[下載地址:https://www.microsoft.com/en-us/download/details.aspx?id=23691]

5、安裝Windows SDK7.1。出現錯誤,按照網絡上的說法,安裝時不要勾選Visual C++ compiler,裝完之後安裝KB2519277補丁。[下載地址:http://www.microsoft.com/en-us/download/details.aspx?id=8279]

6、安裝Windows SDK7.1的編譯補丁VC-Compiler-KB2519277.exe [下載地址:http://www.microsoft.com/en-us/download/details.aspx?id=4422]

7、安裝DirectX SDK DXSDK_Jun10.exe 。出現S1023的錯誤,按照官方提示卸載掉Microsoft Visual C++ 2010 x64 Redistributable , 安裝完重啓。 [下載地址:http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=6812]

8、安裝Windows 8 SDK sdksetup.exe。安裝完成後,C:\Program Files (x86)\Windows Kits\8.0\Include\winrt\asyncinfo.h裏的第66行,刪掉 class。  [下載地址:http://msdn.microsoft.com/en-us/windows/hardware/hh852363.aspx]

9、安裝WDK GRMWDK_EN_7600_1.ISO。[下載地址:http://www.microsoft.com/en-us/download/details.aspx?id=11800]
 
  二、拉取代碼:
1、下載到depot_tools。[細節參考:http://www.chromium.org/developers/how-tos/install-depot-tools]
2、把depot_tools文件夾路徑加入到環境變量Path中。
3、命令行下進入到打算存儲代碼的路徑,執行:gclient config http://src.chromium.org/svn/releases/27.0.1417.1/ [拉取目前最新的分支代碼,可以從http://src.chromium.org/svn/releases/看到所有分支版本,主幹則是:http://src.chromium.org/svn/trunk/src],第一次會觸發安裝subversion、python,會花費比較多的時間。
     安裝完成之後,可能會有錯誤提示,注意使用最新版本depot_tools,有影響google一下就解決。
     打開chromium源代碼目錄下的.gclient,在“custom_deps”節裏忽略掉部分測試代碼,例如:
solutions = [ { "name"        : "27.0.1417.1",
    "url"         : "http://src.chromium.org/svn/releases/27.0.1417.1",
    "deps_file"   : "DEPS",
    "managed"     : True,
    "custom_deps" : {
               "src/webkit/data/layout_tests/LayoutTests": None,
               "src/third_party/WebKit/LayoutTests": None,
               "src/chrome/tools/test/reference_build/chrome": None,
               "src/chrome_frame/tools/test/reference_build/chrome": None,
               "src/chrome/tools/test/reference_build/chrome_linux": None,
               "src/chrome/tools/test/reference_build/chrome_mac": None,
    },
   "safesync_url": "",
  },
]
我因爲忘記了編輯.gclient,代碼全拉了(839個工程),還好是在我睡覺的時候拉取的代碼:)
4、代碼路徑下,命令行執行:gclient sync 拉取代碼,需要較長時間。拉取代碼時沒有一個進度條是很不好的事情。中間可能出現各種意外錯誤。
5、代碼路徑下,命令行執行:gclient runhooks --force 生成sln
6、開始編譯,中途出現了藍屏!可能是SSD硬盤或者是CPU超頻或者是殺毒軟件導致的,最好不要安裝殺毒軟件,可能影響編譯速度。編譯的時候,不要全部編譯,只選擇編譯chrome工程,估計可以少編譯些工程。編譯耗時:i5-3210M CPU @ 2.50GHz,8.00GB內存,64位 win7專業版,三星840系列固態硬盤,編譯時間超過2小時。
  今天試了下使用thinkpad x230,i5 + SSD + 4G內存,編譯31分支代碼,時間大約兩個半小時。4G內存也不算很慢,但是調試的時候比較吃力,內存總是用滿。(2013.9.30)
 
   三、最終效果
工程目錄:
這個跟我之前拉取主幹生成的目錄不一樣,之前的樣子是:
不知道爲啥。
 
     
在chrome_exe_main_win.cc的wWinMain裏下個斷點,OK,能調試。
  四、其它相關問題:
1、上一次編譯主幹代碼的時候,在最後生成階段失敗了,據說是vs2010不支持生成超過1G大小的生成物,但這次編譯卻沒發生錯誤,chrome.dll.pdb大小超過了1G。如果遇上這種錯誤,可以通過http://dev.chromium.org/developers/how-tos/component-build 的提示,把生成物打散解決。debug下,如果沒有打散,chrome.dll大小超過200M,如果打散了,chrome超過90M。
 
2、如果出現了引用計數編譯的錯誤,那是因爲之前安裝了vs2005,設置了include、lib目錄,要把它清理掉。在%localappdata%\Microsoft\MSBuild\v4.0   目錄下,
打開“Microsoft.Cpp.Win32.user.props” 
修改成:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludePath>$(DXSDK_DIR)\include;$(IncludePath)</IncludePath>
    <LibraryPath>$(DXSDK_DIR)\lib\x86;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
</Project>
 
打開 “Microsoft.Cpp.x64.user.props”
修改成:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludePath>$(DXSDK_DIR)\include;$(IncludePath)</IncludePath>
    <LibraryPath>$(DXSDK_DIR)\lib\x64;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
</Project>
 上次我出現過這個錯誤,這次我沒設置該值,編譯沒出大問題。
 
3、如果出現了找不到atlthunk的錯誤。那是因爲沒有安裝wdk。
 
4、如果出現瞭如下錯誤:
D:\svn_chrome\src\third_party\wtl\include\atlapp.h(848): error C2220: warning treated as error - no 'object' file generated
4>D:\svn_chrome\src\third_party\wtl\include\atlapp.h(848): warning C4996: 'vswprintf': swprintf has been changed to conform with the ISO C standard, adding an extra character count parameter. To use traditional Microsoft swprintf, set _CRT_NON_CONFORMING_SWPRINTFS.
沒辦法,按照警告說的,在Preprocessor Definitions 設置了_CRT_NON_CONFORMING_SWPRINTFS。設置了好幾個工程,順利通過編譯。上次我遇到了,這次沒遇到該問題。
 
5、我沒有設置environment variable GYP_MSVS_VERSION=2010e, 不確定是否會對編譯其它非必要工程造成影響。
 
  五、 參考信息
http://blog.sina.com.cn/s/blog_48f93b530101ergp.html
http://blog.csdn.net/cyxisgreat/article/details/7475054
還有其他網絡上的其它資料不列舉。
 ---

 

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