webkit在linux平臺下的編譯
#########################################################################################################
by zevolo
#########################################################################################################
這裡是編譯linux平臺的gtk3.0的基於x11版本
--jpeg-6b:
--patch ./configure
change LIBTOOL="./libtool"
to LIBTOOL="libtool"
--configure引數
--enable-shared=yes --enable-static=no
--libffi-3.0.11 (for glib)
--glib-2.33.6
--libpng
--icu
--libxml
--freetype(for fontconfig)
--fontconfig(for pango, 否則pango不編譯pangoft2)
--pango (需要在cairo之後編譯)
--atk (for gtk)
--cairo (for gtk)
--pixman(for cairo)
--gdk-pixbuf(for gtk, 沒有libtiff, 不想編譯了,需加上--without-libtiff)
--libXi (xinput2, for gtk)
--gtk (gail在這裡, 3.4.4編譯錯誤,gtk/gtkmarshalers.h有三個重複定義,需要patch)
--libXt
--libICE (for libXt)
--libSM (for libXt)
--libsqlite3
--libxslt (sudo 安裝少依賴檔案)
--libgeoclue-dev (改為安裝)
--glib-networking-2.28.0 (for soup --with-libgcrypt-prefix=xxx)
--libsoup (2.39.2不行,編譯的時候發現有些函式沒有定義,需要2.39.5)
--gnutls-2.10.5 (for glib-networking, --with-libgcrypt-prefix=xxx)
--libgcrypt-1.4.6 (for glib-networking)
--gstreamer(開始安裝,後來又編譯了一次)
sudo apt-get install libxcomposite-dev libxfixes-dev x11proto-composite-dev x11proto-fixes-dev
sudo apt-get install libgnome-keyring-dev
sudo apt-get install libxrender-dev x11proto-render-dev
sudo apt-get install libgstreamer0.10-dev libgstreamermm-0.10-dev
需要export有些變數
export PATH=${myroot}/usr/bin:$PATH
export LD_LIBRARY_PATH=${myroot}/usr/lib
export PKG_CONFIG_PATH=${myroot}/usr/lib/pkgconfig/
export LDFLAGS="-L${myroot}/usr/lib"
export CPPFLAGS="-I${myroot}/usr/include"
export CFLAGS="-I${myroot}/usr/include"
./autogen.sh (修改沒有執行configure)
./configure --prefix=${myroot}/usr --disable-webkit2
編譯問題:
--最後編譯unittests的時候,有點問題,webkit_tests_cflags把XT_LIBS和XRENDER_LIBS包含在內,導致編譯失敗。直接改了makefile(GNUMakefile),編譯通過
--如果make clean之後編譯可能會有錯誤,可以刪除WebKit-rxxx目錄下的一些stamp-xxx檔案
#########################################################################################################
編譯結果
生成兩個so以及一些程式
--libjavascriptcoregtk-3.0.so
--libwebkitgtk-3.0.so
拷貝Gtklauncher 到${myroot}中執行,需要設定環境變數
#########################################################################################################
通過idl生成一些cpp檔案
--webkit的gtk binding:
大多數檔案通過編譯的一些生成檔案,也有小部分在 Source/WebCore/bindings/gobject/目錄中
Source/WebCore/bindings/gobject/GNUmakefile.am
DerivedSources/webkit/WebKitDOM%.cpp DerivedSources/webkit/WebKitDOM%.h DerivedSources/webkit/WebKitDOM%Private.h: %.idl $(SCRIPTS_FOR_GENERATE_BINDINGS) $(WebCore)/bindings/scripts/CodeGeneratorGObject.pm $(WebCore)/bindings/gobject /GNUmakefile.am $(supplemental_dependency_file)
$(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $(WebCore)/bindings/scripts/generate-bindings.pl --include $(WebCore)/dom --include $(WebCore)/html --include $(WebCore)/css --include $(WebCore)/page --include $(WebCore)/xml --include $(WebCore)/svg --outputDir "$(GENSOURCES_WEBKIT)" --defines "LANGUAGE_GOBJECT=1 $(gdom_feature_defines)" --generator GObject --supplementalDependencyFile $(supplemental_dependency_file) $<
--webcore的js binding:
大多數都是通過Source/WebCore/GNUmakefile.am生成
DerivedSources/WebCore/JS%.h: %.idl $(SCRIPTS_FOR_GENERATE_BINDINGS) $(WebCore)/bindings/scripts/CodeGeneratorJS.pm $(supplemental_dependency_file)
$(AM_V_GEN)$(PERL) -I$(WebCore)/bindings/scripts $(WebCore)/bindings/scripts/generate-bindings.pl $(IDL_PATH:%=--include "%") --outputDir "$(GENSOURCES_WEBCORE)" --defines "LANGUAGE_JAVASCRIPT=1 $(FEATURE_DEFINES)" --generator JS --supplementalDependencyFile $(supplemental_dependency_file) $<
#########################################################################################################
附:
編譯之後的大小
680M WebKit-r126323
#########################################################################################################