webkit编译详解Word格式文档下载.docx

上传人:b****1 文档编号:1563686 上传时间:2023-05-01 格式:DOCX 页数:19 大小:23.14KB
下载 相关 举报
webkit编译详解Word格式文档下载.docx_第1页
第1页 / 共19页
webkit编译详解Word格式文档下载.docx_第2页
第2页 / 共19页
webkit编译详解Word格式文档下载.docx_第3页
第3页 / 共19页
webkit编译详解Word格式文档下载.docx_第4页
第4页 / 共19页
webkit编译详解Word格式文档下载.docx_第5页
第5页 / 共19页
webkit编译详解Word格式文档下载.docx_第6页
第6页 / 共19页
webkit编译详解Word格式文档下载.docx_第7页
第7页 / 共19页
webkit编译详解Word格式文档下载.docx_第8页
第8页 / 共19页
webkit编译详解Word格式文档下载.docx_第9页
第9页 / 共19页
webkit编译详解Word格式文档下载.docx_第10页
第10页 / 共19页
webkit编译详解Word格式文档下载.docx_第11页
第11页 / 共19页
webkit编译详解Word格式文档下载.docx_第12页
第12页 / 共19页
webkit编译详解Word格式文档下载.docx_第13页
第13页 / 共19页
webkit编译详解Word格式文档下载.docx_第14页
第14页 / 共19页
webkit编译详解Word格式文档下载.docx_第15页
第15页 / 共19页
webkit编译详解Word格式文档下载.docx_第16页
第16页 / 共19页
webkit编译详解Word格式文档下载.docx_第17页
第17页 / 共19页
webkit编译详解Word格式文档下载.docx_第18页
第18页 / 共19页
webkit编译详解Word格式文档下载.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

webkit编译详解Word格式文档下载.docx

《webkit编译详解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《webkit编译详解Word格式文档下载.docx(19页珍藏版)》请在冰点文库上搜索。

webkit编译详解Word格式文档下载.docx

快速词法分析器发生器

Bison

GNU项目分析器

2.X11+Gtk+WebKit交叉编译详解

编译列表:

Name

Version

libpng

1.2.10

pkg-config

0.23

3.0.3

Tiff

3.8.2

libjpeg

6b

freetype

2.1.10

libxml2

2.6.30

fontconfig

2.4.2

XFree86

4.7.0

glib

2.18.0

atk

1.20.0

cairo

1.2.0

pango

gtk+

2.14.0

ICU

4c-3_6

xslt

1.1.22

curl

7.19.2

sqlite

3.5.6

WebKit

r29711

Thecrosssource:

exportARCH=arm

exportCC=iwmmxt_le-gcc

exportCXX=iwmmxt_le-gcc

exportBUILD_ROOT=/uplatform

export

PATH=/opt/montavista/cee/devkit/arm/iwmmxt_le/bin/:

/opt/montavista/cee/host/bin/:

$BUILD_ROOT/usr/bin:

$PATH

PKG_CONFIG_PATH=$BUILD_ROOT/usr/lib/pkgconfig:

$BUILD_ROOT/usr/X11R6/lib/pkgconfig

说明:

CC是c的编译器选项,CXX是C++的编译器选项。

BUILD_ROOT是要build的路径。

PKG_CONFIG_PATH,现在大多数软件,都是通过pkg-config来检查依赖关系的,所以要把两者都加到PKG_CONFIG_PATH环境变量中

Libpng

ethoac_cv_fnuc_malloc_O_nonull=yes>

>

$ARCH-linux.cache

./configure--prefix=/$BUILD_ROOT/usr--host=$ARCH-linux

make&

&

makeinstall

./configure

应为需要较高级的版本的pkg-config才能编译glib和gtk,如果编译机上的版本够高就不需要在升级pkg-config了

Gperf

企业版的/usr/bin下有,可以直接使用,如果没有需要编译一个

字体读取文件库

Libjpeg

由于x11的需求不同,在配置选项的时候要加特定的参数。

所以需要知己configure–h看所需要的选项

Glib

ac_cv_type_long=yes

glib_cv_long_format=ll

glib_cv_stack_grows=no

glib_cv_uscore=no

ac_cv_func_posix_getpwuid_r=yes

./configure--host=arm-linux--prefix=$BUILD_ROOT/usr

以上选项加入到configure里再configure,应为我们arm上裁剪的是

2.4内核,所以有些是不支持的,需要屏蔽

Atk

exportCFLAGS="

`pkg-config--cflagsglib-

2.0`-I$BUILD_ROOT/usr/include"

exportLDFLAGS="

-L$BUILD_ROOT/usr/lib,-rpath=$BUILD_ROOT/usr/lib"

因为atk是依赖glib的,所以需要指定glib

Cairo

ExportCFLAGS="

-I$BUILD_ROOT/usr/include-I$BUILD_ROOT/usr/X11R6/include"

ExportLDFLAGS="

-L$BUILD_ROOT/usr/lib-L$BUILD_ROOT/usr/X11R6/lib-lXft-lfreetype-lfontconfig-lXrender-lexpat-lXext-lX11"

./configure--host=arm-linux--disable-nls--with-x--prefix=$BUILD_ROOT/usr--x-includes=$BUILD_ROOT/usr/X11R6/include--x-libraries=$BUILD_ROOT/usr/X11R6/libmake&

由于我们编译的是

1.2.0所有不需要编译pixman

Pango

FREETYPE_CONFIG=$BUILD_ROOT/usr/bin/freetype-config

Export

LDFLAGS="

-L$BUILD_ROOT/usr/lib-Wl,-rpath=$BUILD_ROOT/usr/lib"

CFLAGS="

2.0cairo`-I$BUILD_ROOT/usr/include/freetype2"

因为pango依赖GLib,freetype,cairo,x11,所以要指明其连接

首先屏蔽config.h里面的

HAVE_XFIXES0

HAVE_CUPS_API_1_2

再configure

`pkg-config--cflagspangoft2pangocairo`-I$BUILD_ROOT/usr/include-I$BUILD_ROOT/usr/include/freetype2-I$BUILD_ROOT/usr/X11R6/include/"

`pkg-config--libspangoft2pangocairo`-L$BUILD_ROOT/usr/lib-lintl-L$BUILD_ROOT/usr/X11R6/lib-lXft-lfreetype-lfontconfig-lXrender-lexpat-lXext-lX11"

CC=iwmmxt_le-gcc

./configure--disable-cups--disable-nls--enable-xim=no--disable-xim-inst--with-xinput=nomake&

./configure--enable-static--enable-shared--host=arm-linux--prefix=$BUILD_ROOT/usr/Xslt

./configure--host=arm-linux--with-x--prefix=$BUILD_ROOT/usr--x-includes=$BUILD_ROOT/usr/X11R6/include--x-libraries=$BUILD_ROOT/usr/X11R6/libCurl

ac_cv_file___dev_urandom_=yes

./configure--host=arm-linux--prefix=$BUILD_ROOT/usr/-without-ssl--without-ca-path--without-ca-bundle

在configure文件里加ac_cv_file___dev_urandom_=yes,再configure

Sqlite

首先执行

shautogen.sh

执行autogen脚本,会生成configure,再执行configure

CFLAGS=-I$BUILD_ROOT/usr/includeLDFLAGS=-L$BUILD_ROOT/usr/lib./configure--prefix=$BUILD_ROOT/usr--host=$ARCH-linuxCFLAGS=-I$BUILD_ROOT/usr/includeCPPFLAGS=-I$BUILD_ROOT/usr/includeicu_config=$BUILD_ROOT/usr/

3.编译出错Q&

A:

Q:

在configure中报找不到某个库,或某个库的版本太低。

A:

1确认是否有该库,版本是否太低。

如果没有请编译该库

2有该库文件,证明没有正确的连接到在CFLAGS和LDFLAGS两个环境变量中指明连接的头文件和库。

3只明了路径为什么还不行?

有些要通过pkg-config读取.pc文件的形式才能正确。

在configure中什么找不到,或一些莫名奇妙的错误。

直接打开configure文件,找到报错的地方,找到其判断语句并将起屏蔽。

2.4的内核不支持stack_grows,在编译glib的时候就要加glib_cv_stack_grows=no,让其屏蔽过去。

在make的时候包语法错误

找到该文件,直接修改其语法错误。

应为是开源软件,有语法错误很正常。

Q:

在make的时候出现找不到某库文件

直接在Makefile的LDFLAGS加其库连接选项,如果本来就不要该库就直接删除。

在make的时候找不到某函数。

在config.h里屏蔽其函数对应的宏。

一般来宏来控制某个编译选项,有些函数是通过宏来判断是否执行的。

其他问题

请google一下。

哈哈!

三.WebKit分析

1.体系结构

WebKit上层组织应用

WebCore

¨

Page与外框相关的内容(Frame,Page,History,Focus,Window)

Loader加载资源及Cache

HTML-DOMHTML内容及解析

DOM-DOMCORE内容

XML-XML内容及解析

Render-排版功能

CSS-DOMCSS内容

Binding-DOM与JavascriptCore绑定的功能

Editing-所有与编辑相关的功能

JavascriptCore-javascript引擎

API-基本javascript功能

Binding与其它功能绑定的功能,如:

DOM,C,JNI

DerviedSource自动产生的代码

ForwordHeads头文件,无实际意义

PCRE-Perl-CompatibleRegularExpressions

KJS-JavascriptKernel

WTF-KDE的C++模板库

Unicodeunicodexx

Toolstoolsxx

CURL-url客户端传输库

PlatForm-与平台相关的功能,如图形图像,字体,Unicode,IO,输入法等.

2.解析流程

2.解析划分字符串

3.通过DomBuilder按合法的html规范生成Dom树

4.如果有javascript,JSEngine就通过ECMA-262标准完善Dom树

5.把Dom传给LayoutEngine,进行布局,如果有CSS样式,就通过CSSParser解析。

6.最后Renderingout出来

3.浏览器系统结构

浏览器系统结构图分为四层

第一层为业务应用层,用户可在webkit基础上构建各种应用。

第二层为插件及第三方库。

第三层为webkit平台Porting所需的接口层。

第四层为平台和操作系统支持层,提供webkit平台所需的软硬件资源。

四.各种浏览器比较分析

1.网页浏览器列表

引擎

网页浏览器

Trident

Gecko

Fennec,Firefox,网景(6至9),SeaMonkey,Camino,Flock,

Galeon,K-Meleon,Minimo,Mozilla,Sleipnir,Songbird,

XeroBank

KHTML或WebKit框架

Safari,Konqueror,Epiphany,GoogleChrome,iCab,OmniWeb,Midori,Shiira

Presto

Opera,xxDS浏览器

Java

HotJava,OperaMini,UCWEB

Tasman

文字界面

Lynx,Links,w3m

嵌入式系统

其它

Amaya,Dillo,Mosaic

Gecko

是套开放源代码的、以C++编写的网页排版引擎。

目前为Mozilla家族网页浏览器以及Netscape6以后版本浏览器所使用。

这软件原本是由网景通讯公司开发的,现在则由Mozilla基金会维护。

这套排版引擎提供了一个丰富的程序界面以供互联网相关的应用程式使用,例如网页浏览器、HTML编辑器、客户端/服务器等等。

虽然最初的主要对象是Mozilla的衍生产品,如Netscape和MozillaFirefox,现在已有很多其他软件现在利用这个排版引擎。

Gecko是跨平台的,能在MicrosoftWindows、Linux和MacOSX等主要操作系统上运行。

KHTML

KDE系统自KDE2版起,在KDE的新程式Konqueror的网页浏览器使用了KHTML引擎。

Presto

是一个由OperaSoftware开发的浏览器排版引擎,供Opera

7.0~

9.60版使用。

Presto取代了旧版Opera4至6版本使用的Elektra排版引擎,包括加入动态功能,例如网页或其部分可随着DOM及Script语法的事件而重新排版。

Presto在推出后不断有更新版本推出,使不少错误得以修正,以及阅读Javascript效能得以最佳化。

2.浏览参数性能比较

IE,Firefox,Opera,Safari。

它使用了iBench和SunSpider作性能基准测试软件。

这里我们摘取其部分有用数据,进行比较。

iBench

是一款应用广泛、跨平台基准测试程序,它能够检测各种Web客户端应用网络新技术时的所表现出来的性能数据。

这里的Web客户端是指任何用于从网上获取信息的硬件和软件,不论使用T1连接互联网Macintosh电脑、无线掌上设备、运行Linux接收WebTV的台式机都在其中。

程序将对这些设备进行一系列测试,得出易用特性和网速对应用的影响程度。

SunSpider

一个JavaScript的基准。

这个基准测试核心的JavaScript语言,并非测试DOM或其他浏览器的API的。

它的目的是比较不同版本的同一浏览器,以及不同的浏览器之间的比较。

是广泛使用的JavaScript的基准。

5.0的XML/CSS和HTML的下载结果可以看出Safari和Firefox表现都不错,IE和Opera表现其次。

5.0的JavaScript的测试性能上看,Safari,opera和Firefox都表现不错,IE明显落后。

以上为SunSpider测试出的综合指标,越小越好。

明显可以看出,Firefox和Safari表现比较好,Opera其实,IE比较落后。

一下是SunSpider测试个参数详细列表:

3.浏览器使用率分析

全球浏览器使用分布

日期

Firefox

Opera

Safari

Q42008

70.53%

20.35%

0.73%

6.84%

Q32008

72.22%

19.48%

0.71%

6.39%

Q22008

73.81%

18.43%

6.14%

Q12008

75.06%

17.35%

0.67%

5.78%

Q42007

77.37%

15.84%

0.62%

5.24%

Q32007

78.85%

14.69%

0.51%

4.80%

Q22007

78.76%

14.92%

0.46%

4.66%

Q12007

79.38%

14.35%

0.50%

4.70%

Q42006

80.69%

13.50%

0.56%

4.06%

Q32006

82.88%

11.89%

3.30%

Q22006

84.03%

10.67%

0.57%

3.25%

Q12006

85.01%

9.77%

0.53%

3.10%

Q42005

85.88%

9.00%

0.54%

2.80%

Q32005

86.74%

7.97%

0.55%

2.24%

Q22005

87.24%

8.08%

0.52%

1.89%

Q12005

89.02%

6.17%

0.49%

1.70%

Q42004

91.35%

3.66%

1.50%

增长率:

-27.91%

229.82%

43.13%

356%

4.WebKit的SWOT分析

优势(Strengths)

通过测试结果WebKit的性能优越是其最大的优势,再加上其开源项目。

性能优越加开源这两大优势,是目前很多嵌入式产品选择他的原因。

劣势(Weaknesses)

因为开源,代码并不是最新的,都是Apple和KDE的更新产品。

代码有滞后性。

开发周期较长和人力投入比较大,毕竟代码量大,复杂度高。

机会(Opportunities)

随着通讯技术的发展,以后的手持设备基本都配有上网功能。

但目前嵌入式设备上的浏览器还是只有竞争时期,这是一个很好的机遇。

如果在做出优秀的适应嵌入式的浏览器,将能成为这一浪潮的弄潮儿。

威胁(Threats)

大蛋糕大家都想要,腾讯,google等都开始推出自己的浏览器。

嵌入式方面Opera,Access等公司都在努力扩张直接的市场,一些大公司也直接晚上WebKit推到直接的平台上,Apple,Android,NOKI等都在自己的手机上推出WebKit的浏览器,可见其竞争是非常激烈度。

五.浏览器的未来

基于WebKit引擎的SafariforWin已经推出,我们可以发现Safari除

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2