天天看點

windows7下cygwin+vs2013編譯webkit源碼

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

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

<a target="_blank" href="http://nightly.webkit.org/">http://nightly.webkit.org/</a>

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

<a target="_blank" href="http://builds.nightly.webkit.org/files/trunk/src/webkit-r174650.tar.bz2">http://builds.nightly.webkit.org/files/trunk/src/webkit-r174650.tar.bz2</a>

這裡是第一個大坑,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) &amp;&amp; _msc_ver &lt; 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旗艦版。

windows7下cygwin+vs2013編譯webkit源碼

key:bwg7x-j98b3-w34rt-33b3r-jvyw9 :)

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

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\,别解壓:

安裝directx sdk:注意這裡不同用最新版本的sdk,隻能用這個版本的。

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

在開始-附件-指令行提示符上右鍵,以管理者身份運作。 

進入指令行以後,執行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小時,即可。如果中間有問題,下次編譯會繼續上次的做增量編譯。 

編譯完成了以後,顯示如下: 

windows7下cygwin+vs2013編譯webkit源碼

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

./build-webkit –debug
windows7下cygwin+vs2013編譯webkit源碼

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

此時進入c:\cygwin\home\kk\webkit-r174650\webkitbuild\release\bin32,所有編譯好的檔案都在這裡。比如我們做webkit開發用到的webkit.dll元件。

輕按兩下winlauncher.exe即可看到webkit運作的效果: 

windows7下cygwin+vs2013編譯webkit源碼

最新版本的編譯,嚴重依賴vs2013,網上沒有任何一個教程可以直接用來按部就班編譯最新的webkit,特别是多個vs的問題,這個我搞了幾個小時才清楚,走了不少彎路。

進入cygwin前,執行vcvars32.bat,把vc的環境變量都設定好,進入cygwin才能調用vs的ide、cl指令做編譯。

進入指令行前,使用管理者權限運作,避免編譯過程有權限導緻的問題。

整個過程大概需要3.6g的下載下傳量,so,需要好的網速。

<a target="_blank" href="http://blog.ashodnakashian.com/tag/webkit/">http://blog.ashodnakashian.com/tag/webkit/</a>

<a target="_blank" href="http://www.webkit.org/building/checkout.html">http://www.webkit.org/building/checkout.html</a>

<a target="_blank" href="http://www.webkit.org/building/tools.html">http://www.webkit.org/building/tools.html</a>

<a target="_blank" href="http://stackoverflow.com/questions/20914800/failed-to-build-webkit-r161259-on-win7-vs2010">http://stackoverflow.com/questions/20914800/failed-to-build-webkit-r161259-on-win7-vs2010</a>

繼續閱讀