Windows平台編譯Webkit

來源:互聯網
上載者:User

最近幾天因為項目需要編譯了一次Webkit,因為其中頗費周折,所以把自己的編譯過程的總結分享一下,希望能給大家協助。

參考網站http://www.webkit.org/

 

1. 編譯環境的搭建

(1)Visual Studio

由於官方指導上面說:暫不支援VS2005以後的版本(newer versions of Visual Studio are currently unsupported)

所以為了避免出現不可預料的錯誤,果斷放棄了VS2010,建立了一個Win7虛擬機器,裝上了VS2005 Team Suite CHS

接下來安裝VS2005的各種補丁

Microsoft Visual Studio 2005 Team Suite Service Pack 1

Service Pack 1 Update for Windows Vista (這個是解決VS2005在Vista以後的系統相容性等的問題)

Visual Studio 2005 Service Pack 1 ATL Security Update

KB943969(這兩個KB好像都是提升編譯的效能和穩定性,必須裝)

KB947315

由於安裝的是中文版,所以對應的補丁也要裝中文版。官方指導裡還有兩個補丁由於沒有中文版,所以沒裝。看補丁說明貌似是提升編譯時間的效能,不知道是中文版裡已經附帶了,還是就是沒有中文版。不過我沒裝也沒出什麼錯誤,就是感覺編譯有點慢,不知道是不是這個問題。(可能是我想太多了)

 

(2)Cygwin

這個就比較簡單了,雖然需要裝100+個組件,但是因為官方提供了自動的下載工具,所以。。。

cygwin-downloader.zip

運行後自動下載組件,然後自動啟動安裝。

選擇從本地檔案安裝(之前自動下載的Release檔案夾),喝杯茶就裝好了。

 

(3)QuickTime SDK

這個也很簡單,就是需要Apple ID,由於本來就是果粉,所以直接登入下載。。。

http://developer.apple.com/quicktime/download/

 

(4)Install DirectX SDK

好像用VS2005的話只能安裝February 2010 DirectX SDK

官方提示:新版本DirectX SDK不支援VS2005 (newer versions do not support Visual Studio 2005)

 

(5)其他

Debugging Tools for Windows和Hotfix是選擇性安裝的,所以就無視了。。。

 

2. 擷取原始碼

最方便的是下載WebKit Nightly Builds,只有20M左右大小。

還有一個http://nightly.webkit.org/files/WebKit-SVN-source.tar.bz2,這個包含了SVN上的所有版本和更新資訊,接近2G,網速好的可以試試。

代碼下載下來以後,解壓到一個地方,磁碟剩餘空間最好大於4G。

之後還要下載一個WebKit Support Libraries,這個不需要解壓,直接放到源碼的根目錄下就行了。

然後啟動我們的Cygwin,進到原始碼的根目錄下的/Tools/Scripts/,運行指令碼update-webkit

具體命令大概是:

cd /cygdrive/盤符

cd /源碼的根目錄/Tools/Scripts/

./update-webkit

之後會自動下載編譯需要的依賴項。

 

3.編譯Webkit

做了那麼多準備工作,終於到了編譯階段,其實真正的挑戰才剛剛開始。Now action!

首先得設定幾個環境變數:

WEBKIT_DIR = Webkit源碼的根目錄

WEBKITLIBRARIESDIR = %WEBKIT_DIR%/WebkitLibraries/win

WEBKITOUTPUTDIR = 這個自定啦(產生結果的路徑)

 

接下來開啟源碼根目錄下\Source\WebKit\win\WebKit.vcproj\Webkit.sln

這樣就啟動了VS2005,左邊一排的項目真是夠嚇人的。

選擇Debug或者Release版本編譯。這裡要注意:有些工程的屬性->配置屬性->C/C++->常規,把警告視為錯誤必須去掉,不然會出現編譯錯誤。

然後用中文版的VS的話WebCore\platform\LocalizationStrategy.cpp會有亂碼,要修改下面這個函數

String contextMenuItemTagLookUpInDictionary(const String& selectedString){#if defined(BUILDING_ON_LEOPARD) || defined(BUILDING_ON_SNOW_LEOPARD)    UNUSED_PARAM(selectedString);    return WEB_UI_STRING("Look Up in Dictionary", "Look Up in Dictionary context menu item");#else#if USE(CF)    RetainPtr<CFStringRef> selectedCFString(AdoptCF, truncatedStringForLookupMenuItem(selectedString).createCFString());    return formatLocalizedString(WEB_UI_STRING("Look Up “%@”", "Look Upcontext menu item with selected word"), selectedCFString.get());#else    return WEB_UI_STRING("Look Up “<selection>”", "Look Up contextmenu item with selected word").replace("<selection>",truncatedStringForLookupMenuItem(selectedString));#endif#endif}

 

之後就慢慢等待編譯吧

個人認為最好手動選擇編譯的順序,不然可能會有問題

WTF->JavaScriptCore->WebCore->後面隨意

 

整個編譯下來花了大約一個多小時,而且由於沒有注意到前面的問題,失敗了好幾次,反反覆複花了好幾個小時才成功。

之後就可以調試運行了,最好裝一個Safari,不然可能會缺少一些dll

運行Webkit.exe,VS裡工具->附加到進程->選擇Safari就可以調試了

 

大家編譯的時候一定要有耐心,如果怕出錯就像我一樣虛擬機器裡配置一個乾淨的編譯環境。

最後祝大家Webkit編譯成功!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.