1. 程式人生 > >webkit在linux平臺下的編譯

webkit在linux平臺下的編譯

編譯webkit

#########################################################################################################

by zevolo

webkit編譯需要很多依賴的庫檔案,有的可能已經系統安裝,如果沒有,就需要安裝或者自己編譯庫檔案來連結。安裝比較方便,但是有時候可能不符合編譯需要。自己編譯工作量大一些,優點是不影響系統其他的功能。這裡傾向於自己編譯。---很累!

#########################################################################################################
這裡是編譯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

#########################################################################################################


相關推薦

Android高通平臺編譯時能生成(拷貝)預編譯的so到system的lib目錄

  參考hardware\qcom\display\libcopybit 通過編譯log可以知道編譯到這裡,生成的copybit.msm8937.so在out\target\product\msm8937_64\system\lib\hw下。libcopybit\Andr

Cocos2d-x3.9 在Windows平臺編譯打包成APK

1、搭建Android環境需要用到Android SDK、NDK、Ant和JDK。 具體的下載及安裝請參考: 2、對上文的補充 1、SDK NDK 和ANT並不需要強制安裝到同一個資料夾中,只要相

windows平臺編譯zThread庫

      今天看到《c++程式設計思想》中併發一章,作者使用zThread這個開源庫來講解,於是我也下了個版本編譯,並簡單使用了下,以下是具體步驟:  一、建立工程       1.下載原始碼       2.建立工程       開啟vs2010,建立一個window

在window平臺編譯libopenacd

最近實驗室的老師讓我們調研可以對CAD的dwg和dxf檔案格式讀寫的庫,大體上就是cadlib,netdxf,libdxfrw,libopenacd這幾個庫,前幾個庫都或多或少能用,但是最後一個libopencad由於正在開發,所以在Windows上編譯很難,下面就是我下載從

windows平臺編譯curl支援https

參看http://curl.haxx.se/download.html,curl有多個版本,會有是否包含ssl之分。如果需要使之支援https,就需要使用帶ssl的版本。 在Windows的平臺下會有多個選擇,想省事的話就直接下載win32-msvc帶ssl版的,加壓后

mac 平臺編譯android版本 ffmpeg+h264

網上很多例子,但是試了很多都沒有都沒有弄好,最後經過長時間的試錯,終於弄好了,放到android 裡沒有問題。 系統環境:os 10.11.5 ndk r12 1,首先下載ffmpeg 2.5.11 https://ffmpeg.org/解壓 2,下載x

sqlite3在windows平臺編譯

首先,sqlite 官方已經有預編譯好的DLL下載,如果你不需要特別優化的版本,直接下載官網上的DLL即可。你可以在下載 頁面的 “Precompiled Binaries For Windows” 可以找到。 不過你想編譯出自己的版本,比如新增優化引數後編譯,de

ffmepg windows平臺編譯

在windows平臺下需要編譯一些模組進去,並開啟除錯版本. 先編譯 libx264和libfdk-aac #下載x264 wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 tar -jxvf

使用VS在64位平臺編譯程式碼,生成64位dll

最近要把一個之前在32位平臺下編譯的專案改成64位平臺,之前從來沒搞過關於64位的東西,所以到處查資料,所幸搞成功了,把過程記錄一下,防止以後忘記。 首先宣告:64位平臺無法直接呼叫32位dll,3

009全誌R16平臺tinav3.0編譯不過的問題

tin android系統 def cut pkg arc ets *** package 009全誌R16平臺tinav3.0下編譯不過的問題 2018/11/13 11:39 版本:V1.0 開發板:SC3817R SDK:tina v3.0 1、01原

android平臺音訊編碼之編譯LAME庫轉碼PCM為MP3

ffmpeg實踐學習 目錄 音訊概述 一般來說音訊的裸資料格式就是脈衝編碼調製(PCM)資料。描述一段PCM資料一般需要以下幾個概念:量化格式(sampleFormat)、取樣率(sampleRate)、聲道數(channel)。以CD的音質為例:量化格式為

Tensorflow之編譯window平臺基於c/c++使用tensorflow

最近在考慮將tensorflow的工程遷移到window平臺下進行,由於linux和mac平臺在官網上有對應的c/c++介面的安裝說明,而window平臺則需要自己編譯。所以現將編譯過程記錄如下: 一、環境準備 1. vs2015 2. swigwin-3.0.12。下載連結為&nb

【Linux】LinuxMIPS平臺交叉編譯FFmpeg庫 及使用庫擷取視訊中的某一幀

一.Linux下MIPS平臺交叉編譯FFmpeg庫: 1.下載ffmpeg庫的原始碼 (http://sourceforge.net/project/showfiles.php?group_id=205275&package_id=248632): [[email

ubuntu 16.04 環境編譯S3C2440平臺總結

1. 使用openocd燒寫S3C2440的nandflash     a) 準備工作:sudo apt-get install openocd     b) openocd 需要配置自己的openocd.cfg,配置檔案可以放在當前執行openocd的目錄,也可以是用引數

【VP9】libvpx在Windows和Linux平臺編譯和vp9編解碼器的命令列引數

=================================================================== 參考:https://www.cnblogs.com/endv/p/6866947.html      &

webkit在linux平臺編譯

編譯webkit######################################################################################################### by zevolo webkit編譯需要很多依

Linux平臺搭建Fortran並行編譯環境(SLES10 )

SLES10 Linux(kernel-2.6.16.21-0.8)平臺下搭建Fortran並行編譯環境一.Fortran編譯器的安裝Linux安裝盤一般都自帶有Fortran編譯器,在SuSe9.1以前均帶有g77,在Suse9.2以後為gfortran。但是,相對來說,由

SQLite3原始碼在Windows及WinCE平臺編譯方法

把原始碼下下來(第一項便是),上面有這麼一句話:This ZIP archive contains all C source code for SQLite 3.7.6.2 combined into a single source file (the amalgama

在高通平臺Android環境編譯核心模組

高通Android環境中Linux核心會作為Android的一部分進行編譯,直接使用make即可一次性從頭編到尾。而有的平臺比如Marvell,核心的編譯操作相對比較獨立,必須使用標準的核心編譯命令進行單獨編譯。一般來說,用高通的這種方式比較傻瓜化,一步到底的感覺;而用Mar

IMX6平臺Linux3.14.28系統編譯驅動模組ko和應用程式的Makefile模版

obj-m += button.oARCH=armMYCROSS_COMPILE=/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi