WebKitGTK+ 编译

      从上周日开始准备Webkit的开发,首先遇到的困难便是Webkit编译的问题。从Webkit.org上下载过,是一个有Qt工程文件的版本,在SLED11sp1上由于Libqt-delev对mesa的依赖引起很多问题。主要是降低版本会引起很多文件版本需要降低的问题,repo上不全,手工找到那么多的依赖库基本上不现实遂放弃。

      根据Webkit.org官方介绍,openSUSE11.1上编译通过,下载、安装、添加repo、编译,gstreamer系列的库在11.1的源上基本上找不到。在一些Linux库搜索网站也没有搜索到像样的库可用。放弃。

      想到11.1版本比较老了,是否最新版本openSUSE11.4对这些库的支持会好些呢?下载、安装。在这个过程中了解到除了官方版本外,还有webkitgtk,webkitqt两个版本可以选择。根据某页面(翻阅了不少版本的WegKit,所以具体是哪个页面不记得了),从http://webkitgtk.org/webkit-1.4.1.tar.gz 下载到了比较老的一个版本。在11.4上开始编译,依然遇到一些库不支持的情况,同时还发现openSUSE社区对repo的支持还没有放出来,好在找到了如下几个源可以使用:

  • 163-openSUSE-11.4-Update:   http://mirrors.163.com/openSUSE/update/11.4/
  • 163-openSUSE-11.4-Oss:      http://mirrors.163.com/openSUSE/distribution/11.4/repo/oss
  • 163-openSUSE-11.4-Non-Oss:  http://mirrors.163.com/openSUSE/distribution/11.4/repo/non-oss
  • Sohu-openSUSE-11.4-Update:   http://mirrors.sohu.com/opensuse/update/11.4/
  • Sohu-openSUSE-11.4-Oss:      http://mirrors.sohu.com/opensuse/distribution/11.4/repo/oss
  • Sohu-openSUSE-11.4-Non-Oss:  http://mirrors.sohu.com/opensuse/distribution/11.4/repo/non-oss

      在想办法安装libsoup库时又找到了官方的一个源http://download.opensuse.org/factory/repo/oss/ 。

      根据webkit1.4.1的要求(运行./configure会给出环境、库要求列表): libsoup的版本2.4>=2.33.6,由于对使用yast升级软件还不是很熟悉安装了一个2.3.2版本进去。./configure告诉我,libsoup库的版本太低了!google一下,在Linxu packages search(http://pkgs.org/)上找到了库文件,同时还发现这个库是openSuse factory提供的。“既然openSuse factory 上有这个库,那么说明openSuse 官方源上可能也会有,那么是哪个源呢?“思考的结果就是找到了http://download.opensuse.org/factory/repo/oss/。

      故事还没有完,由于安装了2.3.2版本,理所当然、异想天开的以为安装了高版本就会覆盖低版本,结果很纠结:2.3.2还存在,./configure的检测结果依然说版本不对。使用rpm -q -a *libsoup*找到了libsoup的安装以及pkgconfig所在目录,用vi更改config.pc文件中的版本为2.3.9,再./configure,通过!!!。哈哈~~oho,我知道、你懂得:这个只是一个假相,include目录中的头文件,lib库还是2.3.2版本的呢,一旦到了编译阶段可能还会有问题。

      ./configure通过,生成了梦寐以求的make文件,make到libsoup时不出所料还是出了问题:soup-request.h找不到。在2.3.2的include目录里果然没有找到这个文件,但是在2.4的目录里确实找到了这个文件。再一次”作假“:把2.4的include目录全部复制到2.3.2的include目录,然后再make。libsoup的这块过去了,terminal中一行一行的添加,make过程很顺利。但也像网络上所讲的,确实很漫长,下午5点多开始到7点多了还在进行中(我使用的是vmware虚机),不等了吃饭去。

     饭后回来发现又抱错了,soup内有些函数undefined reference ,怎么回事呢?原来,我只替换了头文件并没有替换so文件,第三次作假,替换so文件。终于make完毕,且再也没有报错。

      不要按照官方网页上说的什么Tools/Scripts/build-webkt --qt 去编译,这个版本里没有Scripts目录。运行./configure检测依赖库是否已经安装并生成make文件->make编译代码->运行programms里面的GtkLancher即可。附截图:

      在完成Webkit的编译后才发现,openSuse很好用,它的KDE也很漂亮,也就打消了安装gnome的想法。

总结:

      到昨天晚上为止,利用这4天里的业余时间搞定Webkit的编译, 对linux系统的目录的功能、组织结构、make、代码开发有了一个初步实践(很早之前读过一点相关的知识)。下一步开始研究Webkit的代码,定制自己的webkit,终极目标是嵌入到自己的客户端中。

原文地址:https://www.cnblogs.com/Cmpl/p/2134655.html