最近自己的成長目標想從模塊設計轉到系統架構上,剛好大組有個瀏覽器調研的任務,而chromium又是google開源的瀏覽器,所以開始對它進行了一些前期研究。這個過程十分不容易,我對windows下的開發環境瞭解得太少,光是編譯就花了我很大的工夫,我把這裏邊遇到的問題記錄下來。
開發環境:
windows7專業版,sp1
vs2013 我不想自己折騰自己,把原來的vs刪了,裝上編譯要求的。
安裝編譯環境
windows 7.1 sdk
http://www.microsoft.com/en-us/download/details.aspx?id=8279
windows sdk 8
http://msdn.microsoft.com/en-us/windows/hardware/hh852363.aspx
June 2010 DirectX SDK
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=6812
如果安裝過程中出現錯誤S1023
把Microsoft Visual C++ 2010 Redistributable刪掉就可以了,我把x86和x64的都刪了。
Windows Driver Kit 7.1.
http://www.microsoft.com/en-us/download/details.aspx?id=1
所有的這些我都是裝在默認路徑下,以避免需要更改路徑的配置,最大限度避免由於路徑導致的問題。
我在系統配置項中加了以下的配置項,我看了很多網上的攻略,我最後也不知道哪些配置項是有用的了。
新建DXSDK_DIR:C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\
Path新加(在原有的上增加的,請不要把原有的覆蓋掉)
D:\chrome\depot_tools\depot_tools 安裝depot_tools的目錄
新建WDK_DIR:C:\WinDDK\7600.16385.1 Windows Driver Kit 7.1.安裝目錄
1、下載depot_tools
https://src.chromium.org/svn/trunk/tools/depot_tools.zip,解壓就可以用。
注意按上文提到的在path中增加解壓目錄。
2、連接外網的需要,在進行下載編譯時,可能需要連接code.google.com,這個被防火牆屏蔽了。
cmd命令窗口我不知道怎麼設置使用代理,我直接用的vpn,叫NydusVpn,可以免費用一天,如果只是下載代碼的話足夠了,但是不排除以後要有什麼更新的要求。如果大家能直接連外網,這一步忽略。
3、下載代碼,建立一個空文件夾。如D:\chrome_new
在http://src.chromium.org/svn/releases/選一個你需要編譯的版本,我不確定每個版本是否可以編譯,通常選當前瀏覽器對應的版本應該是可以的,我按網上選的是36.0.1929.1
使用cmd進入D:\chrome_new
C:\Users\lenovo>d:
D:\>cd chrome_new
gclient config http://src.chromium.org/svn/releases/36.0.1929.1
等待命令完成。
正式下載
gclient sync --force 這個過程很慢,我等了可能一晚上
5、修改配置,這些配置我也是根據錯誤改的,我不併確定對每個人是否有用。
src\build\common.gypi
(1)查找msvs_disabled_warnings,找到
'msvs_disabled_warnings': [4351, 4355, 4396, 4503, 4819,
# TODO(maruel): These warnings are level 4. They will be slowly
# removed as code is fixed.
4100, 4121, 4125, 4127, 4130, 4131, 4189, 4201, 4238, 4244, 4245,
4310, 4428, 4481, 4505, 4510, 4512, 4530, 4610, 4611, 4701, 4702,
4706,4067,4996,4800,4251,4702,4819,
],
最後這幾個數字沒有的加上,因爲編譯的時候把可能把warning當成錯誤導致編譯不過。
(2)查找msvs_cygwin_shell,修改爲
'msvs_cygwin_shell': 1,
解決 generate_stubs.py : error : No inputs specified問題
(3)查找到msvs_cygwin_shell位置,在下邊增加一行。
'msvs_cygwin_dirs': ['<(DEPTH)/third_party/cygwin'],
解決src\third_party\ffmpeg\.\setup_env.bat 不是內部或外部命令,也不是可運行的程序 的問題
6、生成可編譯代碼,在src目錄下運行
這個錯誤有可能跟我多次編譯沒有成功有關。我的解決辦法是:
打開src\out\Debug,找到chrome_dll_target_hardlink_pdb_to_output_fbcf16b8da7e1fad199557357c2ac58f..rsp文件
用記事本打開,最後兩個參數是兩個路徑
'../out/Debug/initial/chrome.dll.pdb' '../out/Debug/chrome.dll.pdb'"
在out/Debug目錄下刪掉文件out/Debug/chrome.dll.pdb
再次執行ninja -C out\Debug chrome就能夠編譯過了。
到此編譯任務完成,行成的程序在src\out\Debug\chrome.exe
此文由本人回憶整理,如果有疏漏,請見諒。