webkit

​ 时隔好久之后的博客,一直准备要写来着,可惜时间问题,所以就一直拖着!

​ 今天是猪猪的第一天加班,要陪他下班。。。(所以就来先写个前导吧)

​ 本来要在上周末打算写这篇的,猪猪给我了我个大惊喜,周末过得好充实。再加上今天终于解决了上周的遗留问题,应该是猪猪来了的原因吧,所以这么快就解决了这个问题!最近在项目中接触到了WebKit的相关问题!谈到WebKit,那就来谈谈最新版的WebKit的编译问题吧!

一,webkit编译

​ 源码下载的方式:

  1. 进入https://webkit.org/getting-the-code/ 进行源码包 的下载,该源码每天都会进行更新;然后对包进行解压

    1
    2
    tar jxvf WebKit-SVN-source.tar.bz2
    cd webkit
  2. SVN进行下载:

    1
    2
    svn checkout https://svn.webkit.org/repository/webkit/trunk WebKit
    并且可运行update-webkit脚本更新源码
  3. Git下载:

    1
    git clone git://git.webkit.org/WebKit.git WebKit

    对源码进行编译:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    在编译过程中因为系统版本的问题,踩过的坑可真不少!所以在这里记录一下:
    1.依赖库安装
    编译过程中,我们首先需要进行WebKit提供的脚本依赖库安装:

    ./WebKit/Tools/gtk/install-dependencies
    ./WebKit/Tools/Script/update-webkitgtk-libs //执行第二个命令要注意不能在root账号下 第二个命令实际上是下载jhbuild编译工具编译gnome环境,在执行第二条命令时,这个耗时特别长,会出现网络问题,导致如下下载出错
    git clone https://github.com/jhbuild.git
    clone 'jhbuild'...
    remote: Counting objects: 3658, done.
    error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
    fatal: The remote end hung up unexpectedly
    fatal: (EOF)
    fatal: index-pack failed
    Failed to build GTK+ port dependencies with jhbuild
    Died at ./WebKit/Tools/Scripts/update-webkitgtk-libs line 24.
    解决方法:
    应该是clone内容更新太多,需要设置postBuffer更大些,用下面命令解决
    git config --global http.postBuffer 524288000
    大多是因为网速的问题,所以这部分可尽量选择在网速较好的时段内去选择下载,中间出现差错,可多次尝试。

    2.编译
    在以上安装包安装完毕后,可进行编译
    如果是svn得到的代码,进入webkit目录后执行编译脚本得到./WebKitBuild/Release/bin/jsc
    $ cd webkit
    $ ./Tools/Scripts/build-jsc --gtk --makeargs="-j4"
    由于webkit是最新版的,而且编译的时候参考了官网的教程,所以在编译的过程中,相对速度较快,问题较少,中间缺少一个依赖包,安装即可;
    -- Checking for module 'libwoff2dec'
    -- No package 'libwoff2dec' found
    -- Could NOT find WOFF2Dec: Found unsuitable version "", but required is at least "1.0.2" (found WOFF2DEC_INCLUDE_DIRS-NOTFOUND)
    CMake Error at Source/cmake/OptionsGTK.cmake:351 (message):
    libwoff2dec is needed for USE_WOFF2.
    Call Stack (most recent call first):
    Source/cmake/WebKitCommon.cmake:61 (include)
    CMakeLists.txt:156 (include)
    解决方法:根据提示的No package 'libwoff2dec' found 如果直接下载package 'libwoff2dec'会报错,对相关依赖包进行查看后该处缺少的是libwoff-dev 直接sudo apt下载即可
    sudo apt-get install libwoff-dev
    安装完毕,继续进行编译则可。
    最终会出现想要的这个
    [1336/1336] Linking CXX executable bin/testb3
    ====================================================================
    JavaScriptCore is now built (36m:38s).
    ====================================================================

二,编译环境

​ 编译主机版本:Ubuntu 18.04

WebKit版本:WebKit r235496

三,参考文献

​ 【1】https://webkit.org/building-webkit/

​ 【2】https://trac.webkit.org/wiki/BuildingGtk