windows7下cygwin+vs2013編譯webkit源碼

先下載源碼和其他依賴,然後準備cygwin的環境,安裝vs2013,最後編譯即可。網上沒有能直接用於最新版本源碼編譯的教程,所以我在編譯過程中也遇到了很多坑。回過頭來看,這些坑都是可以避免的,想要自己嘗試編譯的同學,可以根據本文快速的實現自己編譯webkit(~除去下載文件的時間,15分鐘準備環境,1小時編譯完成)。

下載最近源碼

最近的下載版本和源碼在這裏:

http://nightly.webkit.org/

我使用的源碼是這個版本built on 13 October 2014 and is a 45.9 MB:

http://builds.nightly.webkit.org/files/trunk/src/WebKit-r174650.tar.bz2

安裝Visual Studio 2013旗艦版

這裏是第一個大坑,WTF項目的compiler.h宏裏寫死了必須用2012以上的版本才能編譯(1800對應於2012,提示信息是建議使用2013):

C:\cygwin\home\kk\WebKit-r174650\Source\WTF\wtf\Compiler.h:
112 #endif
113
114: #if defined(_MSC_VER) && _MSC_VER < 1800
115 #error “Please use a newer version of Visual Studio. WebKit requires VS2013 or newer to compile.”
116 #endif

我開始想試着用vs2010或vs2015來編譯webkit,都有很多問題,走了彎路。比如編譯libGLESv2項目時需要用vs帶的ctres.exe處理嵌入資源。如果系統有多個不同的vs版本,那麼就可能互相影響而出問題。所以後來我索性卸載了VS2010、vs2015,重新下載安裝了vs2013旗艦版。

http://download.microsoft.com/download/0/7/5/0755898A-ED1B-4E11-BC04-6B9B7D82B1E4/VS2013_RTM_ULT_CHS.iso ~2.86G
vs2013

KEY:BWG7X-J98B3-W34RT-33B3R-JVYW9 :)

安裝cygwin

cygwin 官方直接下載的cygwin-downloader.zip綁死了cygwin源,隨機選擇一個,都無法訪問,很蛋疼,不能自動下載需要的169個lib~110M。建議使用163的源,需要先安裝一個python2.7:

https://www.python.org/downloads/release/python-279/ ~18M

然後在源碼文件夾下的WebKit-r174650\Tools\CygwinDownloader\ 修改cygwin-downloader.py添加一個新的163的源(改好的文件見http://pan.baidu.com/s/1i304FQH):

mirror_servers = [“http://mirrors.163.com/cygwin/“…
package_mirror_url = mirror_servers[0];

最後執行:

python27.exe cygwin-downloader.py

腳本會自動下載所有的依賴,然後啓動安裝cygwin,默認安裝在c:\cygwin。默認什麼都不要動就一直下一步即可。(最後python啓動cygwin的安裝程序setup.exe時會自動把這169個lib作爲參數傳遞給程序,所以不需要進去後人工選擇了。)

os.execv(“setup.exe”, list((“-L”, “-l”, os.getcwd(), “-P”, “,”.join(required_packages))))

安裝cygwin完了以後,把webkit源碼解壓到cygwin的用戶目錄下,比如我的是:

C:\cygwin\home\kk\WebKit-r174650

下載WebKitSupportLibrary.zip複製到WebKit-r174650\,別解壓:

http://developer.apple.com/opensource/internet/webkit_sptlib_agree.html ~1M

安裝DirectX和QuickTime

安裝DirectX SDK:注意這裏不同用最新版本的SDK,只能用這個版本的。

http://www.microsoft.com/en-us/download/details.aspx?id=6812 ~571M

安裝QuickTime SDK(這個玩意兒官方不維護已然找不到了)

http://pan.baidu.com/s/1i304FQH ~2M

準備環境

在開始-附件-命令行提示符上右鍵,以管理員身份運行。
進入命令行以後,執行VS安裝目錄下的設置環境命令:

“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat”

接着進入cygwin安裝目錄,進入cyg命令行:

cd c:\cygwin
cygwin.bat

此時可以用export命令查看vs120comntools,vsinstalldir,lib,include等關鍵變量是否設置好。

進入WebKit-r174650\Tools\Scripts,執行

cd ~/WebKit-r174650\Tools\Scripts
./update-webkit

如果出現“Couldn’t unzip WebKitAuxiliaryLibrary.zip.”
打開文件update-webkit-dependency文件,去掉兩個curl的–sslv3參數。再重新執行update-webkit。

提示缺少fonts請忽略。

執行編譯

編譯之前,先改一處源碼:找到WebKit-r174650\Source\WebCore\platform\LocalizedStrings.cpp文件,去掉250行和252行的字符串內的雙引號。

開始編譯:在cygwin的命令行環境下WebKit-r174650\Tools\Scripts路徑下執行如下命令:

./build-webkit –release

提示svn更新代碼版本出錯,請忽略。
然後等待約1小時,即可。如果中間有問題,下次編譯會繼續上次的做增量編譯。
編譯完成了以後,顯示如下:
build-webkit --release

如果我們要debug模式的dll和exe,可以–debug。

./build-webkit –debug

build-webkit --debug

可以看到debug版本編譯花了52分鐘31秒(debug項目比release多是因爲有test項目)。

此時進入C:\cygwin\home\kk\WebKit-r174650\WebKitBuild\Release\bin32,所有編譯好的文件都在這裏。比如我們做webkit開發用到的webkit.dll組件。

雙擊WinLauncher.exe即可看到webkit運行的效果:
win launcher for test webkit

總結

  • 最新版本的編譯,嚴重依賴VS2013,網上沒有任何一個教程可以直接用來按部就班編譯最新的webkit,特別是多個vs的問題,這個我搞了幾個小時才清楚,走了不少彎路。
  • 進入cygwin前,執行vcvars32.bat,把vc的環境變量都設置好,進入cygwin才能調用vs的ide、cl命令做編譯。
  • 進入命令行前,使用管理員權限運行,避免編譯過程有權限導致的問題。
  • 整個過程大概需要3.6G的下載量,so,需要好的網速。

參考

  1. http://blog.ashodnakashian.com/tag/webkit/
  2. http://www.webkit.org/building/checkout.html
  3. http://www.webkit.org/building/tools.html
  4. http://stackoverflow.com/questions/20914800/failed-to-build-webkit-r161259-on-win7-vs2010
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章