webkit的編譯(r76498)
最近在xp上成功編譯了webkit,查閱很多文件,發現網上的文件介紹編譯方法所對應得webkit版本過於沉舊。這裡介紹的原始碼版本是 ,是2011年1月24號編譯的。編譯過程不是複雜,只要參考 其中的working code 一步一步的來。不會有太大的問題,當然還需要些補充,下面就介紹的。(也許是原始碼版本更新的緣故,現在的官方網址上面的編譯指南還是很有效的。)
[@more@]
編譯前的準備工作是搭建編譯環境,安裝工具
1.安裝vs2005 team suite (我用的是英文版),接著是安裝sp1, 然後依次安裝四個補丁包,注意次序, 。
2.下載。解壓後,執行cygwin-downloader.exe,這會下載118檔案到同級目錄的release資料夾中,(若網速慢,需要一段時間的)還有些cygywin的安裝程式setup.exe。下載完成後,執行setup.exe,選擇 install from local directory,選中cygwin-downloader.exe所載目錄,點選下一步安裝完成。
3.安裝quicktime sdk :http://developer.apple.com/quicktime/download/需要到註冊個開發者賬號後下載,緣由是蘋果沒有向大眾開放自己的sdk。
4.安裝directx ,,之前沒有安裝結果編譯不過,所以必須安裝。頁面渲染加速的需要。
下面的工作是獲取原始碼。:
1.這裡我下載的原始碼版本是 . 有16M大小。解壓到F:/WebKitsrc下(也可以是其他目錄)。
2.下載WebKit Support Libraries到F:WebKitsrc下(與webkit解壓到同級目錄)
3.Update source tree.開啟cygwin shell,進入F:/WebKitsrc/Tools/Scripts目錄下(一般是掛載到/cygdrive/f/webkitsrc/Tools/Scripts目錄下)執行./update-webkit指令碼。
4.執行./build-webkit -debug,編譯debugwebkit庫。
以上步驟進行後,發現編譯通不過,此時開啟F:/WebKitsrc/Source/WebKit/win/WebKit.vcproj,修改其中每個工程的屬性,將c/c++編譯選項中的,設定”Treat Warnings As Errors”為”No”。聽說這是由quicktime sdk標頭檔案編碼問題。此步完成後,在執行第4步即可。
編譯成功後,生成的核心檔案有WebKit.dll,JavaScriptCore.dll,QTMovieWin.dll,InjectedBundle.dll,WebKit.exe,MiniBrowser.exe
如何除錯所生成的webkit庫呢?
此時我們雙擊執行MiniBrowser.exe,會提醒說缺少CFNetwork.dll等。
我們下載的是蘋果的webkit版本,執行需要依賴於mac平臺的一些庫和其他一些開源庫,如AVFoundationCF.dll,CFNetwork.dll,CoreAudioToolbox.dll,Foundation.dll,objc.dll,SQLite3.dll,zlib1.dll等。
所以我們需要下載win32版safari,安裝完畢後,將C:/Program Files/Common Files/Apple/Apple Application Support下的所有dll檔案除了WebKit.dll和JavaScriptCore.dll(這要用到我們自己編譯好的庫),到F:/WebKitsrc/WebKitBuild/Debug/bin目錄下。此時MiniBrowser.exe就可以執行了,我們就可以MiniBrowser.exe為宿主程式除錯webkit.dll和JavaScriptCore.dll了,瞭解頁面的DOM樹生成,排版和渲染的過程了。當然先要掌握具體的HTML/CSS規範。
忘了說明,還需設定以下環境變數:
WEBKITLIBRARIESDIR=F:/webkitsrc/WebKit/Libraries/win這個目錄是前面所提到的WebKit Support Libraries自動被解壓所生成的目錄。WEBKITOUTPUTDIR=F:/webkitsrc/WebKitBuild這個是編譯的輸出目錄。
我們是用cyngwin的bash指令碼,這些指令碼會為每個參與編譯的工程,生成一箇中間的bat檔案,然後呼叫cmd.exe,執行這個bat檔案,其中呼叫的vs2005編譯器。從工程的buildlog中,可以看到這些行為。
後記:
後來單獨更新了WebKitSupportLibrary.zip,wekit編譯成功但執行./run-safari --debug時,得到了如下結果:
“you copy of safari is missing important software resouces please install safari”
“無法定位程式輸入點****與動態連結庫*****(如icuuc40.dll)上”
仔細看了WebKitSupportLibrary.zip 中的內容都是這些關鍵庫的標頭檔案和lib,這說明了這些庫與safari安裝目錄下的apple Application support庫不相容
(“C:/Program Files/Common Files/Apple/Apple Application Support”),不是太新了,就是太老了。
回覆到之前成功編譯時用的WebKitSupportLibrary.zip。重新編譯safari就成功被啟動了。
這說明大家編譯成功後,應該儲存當時的編譯包等資料。safari更新並不能與WebKitSupportLibrary.zip保持一致。
除此之外估計全用最新的包也可能會避免這類問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23410886/viewspace-1046300/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- win7 64位編譯WebKit核心Win7編譯WebKit
- 靜態編譯Qt5.4.1和Qt WebKit編譯QTWebKit
- 譯文:WebKit for DevelopersWebKitDeveloper
- Mac OS X編譯最新webkit(2013-03-15)Mac編譯WebKit
- 瀏覽器核心WebKit編年史瀏覽器WebKit
- 編譯器的編譯基本過程編譯
- #Webkit 翻譯# Web 檢查器中的圖層視覺化工具WebKit視覺化
- SCSS 的編譯CSS編譯
- 編譯器的自展和自舉、交叉編譯編譯
- cmake編譯指定自己編譯的庫路徑編譯
- Java編譯與反編譯Java編譯
- Mac平臺反編譯Unity編譯的安卓apkMac編譯Unity安卓APK
- Webkit 核心初探WebKit
- webkit 基礎WebKit
- THE WEBKIT INSPECTORWebKit
- 編譯編譯
- 開發者需要了解的WebKitWebKit
- python的編譯Python編譯
- OCI程式的編譯編譯
- webkit 瀏覽器內幕之HTML 直譯器和DOM 模型WebKit瀏覽器HTML模型
- Java程式碼的編譯與反編譯那些事兒Java編譯
- hadoop編譯—+2.x編譯Hadoop編譯
- gcc 編譯器與 clang 編譯器GC編譯
- 一張圖解析 編譯器編譯流程圖解編譯
- ubuntu下編譯交叉編譯工具鏈Ubuntu編譯
- [轉]andriod的apk檔案相關的編譯反編譯工具APK編譯
- [譯]iOS編譯器iOS編譯
- 程式碼線上編譯器(上)- 編輯及編譯編譯
- [譯] 優化 Swift 的編譯時間優化Swift編譯
- FreeBSD中的GNU C編譯器--編譯器GCC(轉)編譯GC
- 檢視已經編譯過的NGINX當時的編譯引數編譯Nginx
- 開源編譯工具和編譯軟體編譯
- Make編譯之編譯32bit ffmpeg編譯
- N1064編譯鏈編譯編譯
- 翻譯的未來:翻譯機器和譯後編譯編譯
- webpack的編譯&構建Web編譯
- 對預編譯的理解編譯
- 關於庫的編譯編譯