从上周日开始准备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/archive/2011/08/11/2134655.html

WebKitGTK+ 编译相关推荐

  1. linux下编译webkit,Linux下编译WebKit和JSC

    Safari和Chrome的内核都是webkit,无论是打算自己开发个浏览器还是在程序里集成完整的HTML解析功能,webkit都是为数不多的选择.特别是webkit分支中的jsc,可以命令行下解释执 ...

  2. 全志 Tina Linux 图形系统 框架介绍 最全介绍 MiniGUI、QT5、EFL、GTK+(WebkitGtk、Midori)、DirectFB、Wayland

    1 概述 本文档将介绍 Allwinner Tina Linux 中已经移植好的窗口系统,以及怎么使用,包括 MiniGUI.QT5.EFL.GTK+(WebkitGtk.Midori).Direct ...

  3. go build 编译报错 missing go.sum entry for module providing package

    go build 编译报错 missing go.sum entry for module providing package 解决方法 // 移除未使用的依赖 go mod tidy 再次编译,就可 ...

  4. kotlin重写构造方法编译报错:Primary constructor call expected

    在kotlin中使用construct关键字定义构造方法,如果类定义时已经有构造方法(类名后带括号),需要添加构造方法时,需要使用以下写法: class User(var name,var age){ ...

  5. Myeclipse中项目没有代码错误提示,jsp页面无编译迹象?如何解决

    在使用Myeclipse开发项目时,发现jsp页面中嵌入的java代码没有编译的迹象,错误的get方法没有报错,没有报错信息我们如何知道我们开发的内容是正确的呢? 接下来就演示一下如何解决

  6. 初试linux编译(ubuntu+vim)+玩转智能蛇

    一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...

  7. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  8. Go 编译的可执行文件是否有动态库链接?

    Go 引用了其他包的话,是将引用的包都编译进去.用 ldd 看几个 Go 编译出来的二进制程序有的没有动态链接库的使用.但是有的又有引用动态链接库,这个是为什么? 回答:Go 默认是开启 CGO_EN ...

  9. Go 知识点(18)— 条件编译(编译标签、文件后缀)

    1. 条件编译 Go 能根据所处环境选择对应的源码进行编译.让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就叫做条件编译. 在 Go 中,也称之为 Build Constraints ...

最新文章

  1. CentOS开机自动运行程序的脚本
  2. php ajax工作原理,AJAX实现页面无刷新操作原理解析
  3. netty web 容器_Netty 实战:如何编写一个麻小俱全的 web 框架
  4. Docker入门-架构
  5. python堆排序算法_Python算法学习之堆和堆排序
  6. 作为日千万订单级别的业务,美团外卖的后端服务是怎么支撑的
  7. LTE学习:天线端口数目和物理天线数目关系
  8. c++调用栈库函数_大华 | C/C++ 校招笔试题
  9. 2021-05-06 git 设置XX门8580端口代理访问github
  10. 没解决:MMC不能打开文件MSC可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版本创建。也可能你没有访问此文件的足够权限
  11. ES6的Set()方法实现数组去重
  12. 入门级详细USB移植教程
  13. Maven cmd 打包命令
  14. window 10 金蝶KIS SPR32X30.OCX不能正确注册
  15. Sigma-Delta 调制
  16. WordPress 安全漏洞
  17. 【数据结构】格洛克怎么上膛?栈的结构帮你解答!
  18. css实现聚光灯特效
  19. Android 面试真题收录~
  20. java类农夫过河问题_农夫过河问题,从JAVA代码看算法

热门文章

  1. Transformer、BERT等模型学习笔记
  2. 转︱机器学习算法线上部署方法
  3. synchronized锁升级过程详解
  4. Linux编辑启动停止重启springboot jar包脚本
  5. Pycharm下tensorflow导入错误
  6. 做双网卡绑定_______物理机在双网卡的情况下做多IP绑定
  7. 集群tomcat+session共享
  8. tomcat 点击startup.bat一闪而过
  9. Unity 2D Touch Movement
  10. 主流搜索引擎Lucene,Solr,ElasticSearch