WebKit 在Windows 平台下編譯小結

來源:互聯網
上載者:User

     WebKit 是世界公認的優秀的開源瀏覽器核心。具有渲染速度快,靈活可定製,多平台支援等優點。國內知名的Maxthon 和 UCWeb 都將WebKit選作瀏覽器核心。Google公司和蘋果公司也分別在WebKit 基礎上只做了Chrome 瀏覽器和Safari 瀏覽器。

     雖然WebKit 已經越來越多的被廣大程式員接受,但其編譯過程卻非常之痛苦。下面將我編譯WebKit 代碼的經驗與大家分享。

 

1) 擷取WebKit 原始碼

      WebKit 原始碼是使用Subversion 工具做管理的。因此,只要具備Subversion 用戶端就可以從http://svn.webkit.org/repository/webkit/trunk 擷取原始碼。但是,這並不是最好的方式。在實際編譯過程中通過svn拿下來的代碼有可能為你帶來許多的煩惱。因此,我推薦從WebKit的Nightly build 直接下載WebKit 原始碼壓縮包。具體地址是:http://nightly.webkit.org/builds/trunk/src/1 像WebKit 這麼大的項目仍然遵循Daily Build 的原則,真是挺了不起的。

      WebKit 原始碼在本文寫作時,版本是r52221 但我最近兩天都沒有將該版本的WebKit編譯成功。原因是,使用Visual Studio 2005 開啟項目幾分鐘後,Visual Studio 2005 會停止回應。我測試過r50006版,也就是5字頭的第一版,就沒有這個問題。版本號碼越大說明原始碼越新,反之就越古老。

 

2) WebKit 編譯環境的搭建

     WebKit 網站有一篇文章說明了一下WebKit 在Windows 平台下的環境搭建:http://webkit.org/building/tools.html 但這篇文章寫得也太過簡單了。這也是WebKit 最最蹂躪人的地方。我在曆經十數次失敗之後,終於找到了通往目標的捷徑。

 

  硬體方面

     記憶體最好找一台記憶體大於2G的電腦。 因為WebKit 項目太過龐大了,會產生數以百計的.obj 檔案。在執行連結操作時,記憶體會需要大概1.6G記憶體。如果你機器安裝的又是Vista 之類的吃記憶體作業系統,那就等著看link.exe 告訴你"Out of memory"吧。 我安裝了Vista的機器的記憶體只有區區2G,連結了數次都沒有成功,最後逼得我在安全模式下(連網卡驅動都沒敢載入)編譯,終於在記憶體峰值到達1.99G 時涉險過關,真是太刺激了,太刺激了。

     硬碟當然是越大越好,因為WebKit 原始碼展開後需要佔用160M-190M磁碟空間,編譯過程產生的中間檔案需要大約4G的儲存空間。外加上Cygwin Visual Studio 等佔據的磁碟空間,這些還是挺大的。 最最重要的是系統硬碟最好預留出4G左右的空間。

     其實使用多核的CPU對編譯WebKit 也是有好處的,編譯指令碼可以同時並行的調用cl.exe 編譯WebKit,大大縮短了編譯時間。

 

     軟體方面

   首先你需要安裝Visual Studio 2005 SP1 如果是Vista 或者Window 7 需要安裝 SP1 update for vista。 Visual C++ 2005 Express 也是可以編譯WebKit的,但是需要單獨安裝 Platform SDK。 實踐證明WebKit 在Platform 5.0 6.0 上都可以編譯通過。

     這裡也會引申出一個問題,如果你的機器上已經安裝了Visual Studio 2008 怎麼辦? 別擔心,Visual Studio 2005 和Visual Studio 2008 是可以共存的,並且Visual Studio 2005 可以在Viusal Studio 2008 之後安裝。但是,需要注意的是,當Visual Studio 2005 在Visual Studio 2008 之後安裝後,WebKit 的perl指令碼只會到 “系統硬碟\Program Files\Microsoft Visual Studio\” 下面去找VC 的bin檔案夾(也就是cl.exe 所在檔案夾)。如果你安裝的VS 2005 不在系統硬碟,需要將VC的bin檔案夾拷貝到系統硬碟的那個目錄中去。

     在安裝完Visual Studio 2005 之後,需要安裝另一個大塊頭Cygwin。Cygwin實際上是在Windows 上類比了一個Unix 環境。 安裝Cygwin最好不要直接使用Cygwin網站上給出的setup.exe 檔。而是使用WebKit.org網站上給出的cygwin-downloader 工具。 cygwin-downloader 會下載編譯WebKit 所需的101 個工具(現在可能又多了幾個),諸如perl、zlib、bash 等等。待下載完成後,再運行Cygwin的安裝工具 Setup.exe 選擇從本地目錄安裝。請注意!Cygwin 要安裝到系統硬碟分區下,如C盤是系統硬碟,那麼Cygwin就必須安裝在C:\cygwin 下。安裝完成後,大約會佔據幾百兆的空間。

    下一步,仍需要安裝的是QuickTime SDK。 據有人說可以不安裝這個QuickTime SDK,但我發現如果不安裝的話WebKit 解決方案中的QTMovie 項目一定是無法編譯成功的。 QuickTime 一定要安裝在 系統硬碟:\Program Files\QucikTime SDK\ 下面,千萬別改動安裝路徑。

 

    最後,在解壓縮WebKit 原始碼檔案之後,還需要到webKit.org 網站下載 WebKitSupportLibrary.zip 檔案,這個檔案是一些第三方庫在Windows 平台上預先編譯好的版本。供WebKit 連結時使用。下載後,zip檔案無需解壓縮,直接放在WebKit的根目錄下即可。

 

 

編譯步驟

    1)  設定環境變數。將WEBKITLIBRARIESDIR設定為 WebKit 原始碼目錄\WebKitLibraries\win 路徑; 將WEBKITOUTPUTDIR 設為你打算要存放obj和dll 的輸出檔案夾,當然這個檔案夾所在的分區至少要有4G的剩餘空間。

    2)  執行更新指令碼。 請在案頭上運行cygwin 的命令列視窗,然後通過CD 命令(和DOS的CD命令一樣) 跳轉至WebKit 原始碼目錄\WebKitTools\Scripts 檔案夾下。比如,我的WebKit 原始碼放在F盤,就是 cd F:/WebKit/WebKitTools/Scripts/  運行該目錄下的 Update-WebKit 和 Update-WebKit-Support-libs 兩個指令碼。 很多部落格上都沒有提到這個步驟,實際上這個步驟是能否成功編譯的關鍵。

    3)  成功執行完上面兩步後,就可以使用Visual Studio 2005 開啟位於 WebKit 原始碼目錄\WebKit\win\WebKit.vcproj\ 目錄下的 WebKit.sln 解決方案了。這個sln預設帶有六個編譯配置 Debug、Debug_all、Debug_Cairo、Release、Debug_Internal、Release_Cairo。用Release 編譯出來的就是用蘋果自己的渲染引擎的版本,和Safari 的一致。 用Release_Cairo 編譯出來的是支援Cairo渲染引擎的版本,這個版本可以脫離蘋果的環境單獨跑,但同時也無法放到蘋果的Safari 環境中運行。要想監測編譯是否成功,可使用WinLauncher.exe 這個應用程式載入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.