瀏覽器內核中,以我對Mozilla Firefox比較熟悉,併爲其寫過擴展。不過Webkit這幾年絕對值得注意,並且在mobile平臺上,Webkit比Firefox要成功。
瞭解開源一個項目,從source build開始。我選擇的是webkit-gtk,因爲我有個配置良好的ubuntu VM。
幫助頁面http://trac.webkit.org/wiki/BuildingGtk,說明了其它庫依賴:
- autoconf
- automake
- libtool
- libgtk2.0-dev (>= 2.10)
- libpango1.0-dev (>= 1.16)
- libicu-dev
- libxslt-dev
- libsoup2.4-dev (>= 2.27.4) (*)
- libsqlite3-dev
- gperf
- bison (>= 2.4.1)
- flex
- libjpeg62-dev
- libpng12-dev
- libxt-dev
- autotools-dev
- libgstreamer-plugins-base0.10-dev
- libenchant-dev
- libgail-dev
- libgeoclue-dev
- gtk-doc-tools
直接用apt-get 全部安裝。
這一步簡單.
再來是構建:
$ ./autogen.sh --prefix=/path/to/install/directory
$ make
出錯了,同一頁面說明了原因:
(*) Libsoup 2.29.3 tar ball release is missing libsoup/soup-content-decoder.h .
SOUP_TYPE_CONTENT_DECODER is defined in the header file and it will
result in a compilation error: WebKit/gtk/webkit/webkitprivate.cpp:290:
error: 'SOUP_TYPE_CONTENT_DECODER' was not declared in this scope .
libsoup 2.28.2 works.
但是我想,如果自己patch一下,應該更快,不用安裝什麼舊版本。
所以我自己把
libsoup/soup-content-decoder.h
放到了適當的位置,再把用到decoder的代碼刪改一下。。
$ ./autogen.sh --prefix=/path/to/install/directory
$ make
$ ./Programs/GtkLauncher
一個簡單的Webkit瀏覽器,就通過XMing顯示出來了。。 (Release版前後編譯折騰了一兩天)
今天中午忽然想用GDB調試,所以加了個參數:
$ ./autogen.sh --prefix=/path/to/install/directory --enable-debug
$ make
結果總是出現:
CXXLD libwebkit-1.0.la
collect2: ld terminated with signal 9 [Killed]
網上一查,是因爲內存不足,
學習http://blog.csdn.net/flowingflying/archive/2009/12/01/4915330.aspx中的方法,
加了個2G的swap文件,再make.
四小時多過去,gdb GtkLauncher
b main
r
成功了~~