最近编译出了Qt4.7.4的嵌入式版本,但没有编译QtWebkit库。在编译一个使用Webkit的工程时出错,而根据工程的需要,要单独编译QtWebkit库。
    由于不想再次编译整个的Qt库,于是进行了下面的尝试,发现单独编译QtWebkit还是简单的,当然其它模块也是一样的。

具体过程如下:

1.在qt源码包的顶层运行configure配置:

------------------------------------------

./configure -opensource -confirm-license -release \
-prefix /usr/local/arm/qte4.7.4 \
-webkit -qt-zlib -no-script \
-xplatform qws/linux-arm-gnueabi-g++ -embedded armv6 \
-qt-kbd-linuxinput -qt-mouse-linuxinput -plugin-gfx-linuxfb \
-nomake demos -nomake examples -nomake tools -fast \
-L /usr/local/arm/lib -I /usr/local/arm/include

-----------------------------------------------------------

2.生成QtWebKit模块的Makefile文件

进入QtWebKit源码所在的目录./src/3rdparty/webkit.如果在目录中执行make会出错,主要是qmake找不到,因为在这时的Makefile文件中,使用的是固定路径的qmake.
使用以下命令重生成Makefile文件,当然后面的spec路径要根据实际情形设置

qmake WebKit.pro -r -spec /usr/local/arm/qte4.7.4/mkspecs/qws/linux-arm-gnueabi-g++

3.编译
make

编译过程中仍出现错误:
-----------------------------------------------------------------------------------------
......

正在进入目录 `/home/dragon/project/qte4.7.4/src/3rdparty/webkit/WebKit/qt/tests/qwebframe'
然后一堆类似这样的错误
../../Api/qwebframe.cpp:21:20: error: config.h: No such file or directory
../../Api/qwebframe.cpp:24:20: error: Bridge.h: No such file or directory
../../Api/qwebframe.cpp:25:23: error: CallFrame.h: No such file or directory
../../Api/qwebframe.cpp:26:22: error: Document.h: No such file or directory
../../Api/qwebframe.cpp:27:28: error: DocumentLoader.h: No such file or directory
......
-----------------------------------------------------------------------------------------
看来忘加-nomake test选项了,但幸好QtWebKit库己编译出来,就不去处理这些错误了。后来经过试验,加上-nomake test编译就不会出现错误了。

4.安装
make install

再到安装目录中检查,libQtWebKit.so.4.7.4库己经安装

5.测试
使用现在的QtEmbedded来编译一个使用QtWebKit的工程browser,在make过程中出错:
------------------------------------------------------------------------------------------
In file included from /usr/local/arm/qte4.7.4/include/QtWebKit/QWebFrame:1,
                 from browsermainwindow.cpp:70:
/usr/local/arm/qte4.7.4/include/QtWebKit/qwebframe.h:28:36: error: QtScript/qscriptengine.h: No such file or directory
In file included from /usr/local/arm/qte4.7.4/include/QtWebKit/QWebFrame:1,
                 from browsermainwindow.cpp:70:
------------------------------------------------------------------------------------------

看来QtWebKit依赖QtScript,只好再编译QtScript

下面是单独编译QtScript模块的过程
这次confiugre的参数配置如下:

------------------------------------------------------------

./configure -opensource -confirm-license -release \
-prefix /usr/local/arm/qte4.7.4 \
-webkit -qt-zlib \
-xplatform qws/linux-arm-gnueabi-g++ -embedded armv6 \
-qt-kbd-linuxinput -qt-mouse-linuxinput -plugin-gfx-linuxfb \
-nomake demos -nomake examples -nomake tools -nomake test -fast \
-L /usr/local/arm/lib -I /usr/local/arm/include

------------------------------------------------------------

与上次配置不同的是去掉了-no-script选项,增加了-nomake test选项

然后进入./src/script目录
qmake script.pro -r -spec /usr/local/arm/qte4.7.4/mkspecs/qws/linux-arm-gnueabi-g++

make

make install

现在再次编译browser工程,终于顺利地单独编译出QtWebKit库。并使用一个工程进行了测试,一切都正常。

从上面的过程可以看出,Qt库的许多模块可以单独编译的。只要先使用configure配置选上需要的模块,注意带上-fast选项和适当的-nomake选项;然后进到相应的模块源码目录中,使用qmake重新生成对应的Makfile文件;在此目录make、make install。如此这般就完成了Qt模块的单独编译.

有人可能会问,为什么要单独编译。当然可以一次就搞定所有模块,不过交叉编译往往由于各种原因,某些模块编译通不过,有时有些模块肯定用不到,总有一些原因造成Qt的模块编译不完整。在这时,不需要再次编译所有的Qt库,只要单独编译就可以的。何乐而不为

http://blog.sina.com.cn/s/blog_8738908f0100u84l.html

Qt4.7.4下单独编译QtWebkit的更多相关文章

  1. Linux下单独编译安装PHP扩展包

    首先进入PHP源码目录,比如这个: root@vultr:~/php-/ext/soap# 运行下PHP目录下的phpize,接着就可以和普通代码一样,配置,编译,安装了(注意:有些库可能可以配置参数 ...

  2. [转]QGis2.9在windows下的编译以及二次开发包下载

    今天心血来潮,将QGis在github上的代码更新后,又编译了一下.留意到源代码包里面的INSTALL文件有更新,于是本次编译完全基于官方的编译说明.编译过程非常顺利,除了在CMake的第一次conf ...

  3. 单独编译使用WebRTC的音频处理模块

    块,每块个点,(12*64=768采样)即AEC-PC仅能处理48ms的单声道16kHz延迟的数据,而 - 加载编译好的NS模块动态库 接下来只需要按照 此文 的描述在 android 的JAVA代码 ...

  4. 烂泥:centos单独编译安装gd库

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 这几天一直在弄一个商城系统,该系统的源码及数据库都已经上传并创建完毕.但是在安装该系统时,却提示缺少gd库.如下: 使用php探针查看,发现php确实没 ...

  5. 单独编译osgQt模块 Qt moc

    从alphapixel网站下载了OSG3.0.1VS2010x64版本的库,但是里面不包括osgQt模块,于是得自己编译 *************osgQtx64.zip工程文件可以去本博客园的“文 ...

  6. 安卓系统源码编译系列(六)——单独编译内置浏览器WebView教程

    原文                   http://blog.csdn.net/zhaoxy_thu/article/details/18883015                 本文主要对从 ...

  7. Solaris 10下Qt编译Oracle 10g驱动

    上回书讲到<Oracle 10g在Solaris 10中安装详解>,现在开始用Qt来编译下Oracle 10g驱动吧!这样就可以通过Qt程序联入Oracle数据库了! Oracle的环境变 ...

  8. android 单独编译某个模块

    第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了.以后如果我们修改了And ...

  9. 【流媒體】live555—VS2008 下live555编译、使用及测试

    [流媒體]live555—VS22008 下live555编译.使用及测试 Ⅰ live555简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如R ...

随机推荐

  1. erlang---启动参数学习/研究

    erlang启动参数有3种:emulator flags, flags 和plain arguments. emulator flags 是以“+”开头的,用来控制模拟器的行为,附送一个非常实用的例子 ...

  2. git如何更新fork的repository(Fork一个别人的repository,做了一些改动,再合并别人的更新)

    Fork一个别人的repository,做了一些改动,想提交pull request的时候,发现原先别人的repository已经又有了一些更新了,这个时候想使得自己fork出的repository也 ...

  3. 设计模式在JDK中的应用

    在JDK(Java Development Kit)类库中,开发人员使用了大量设计模式. 创建型模式: (1) 抽象工厂模式(Abstract Factory) • java.util.Calenda ...

  4. WPF中 PropertyPath XAML 语法

    原文:WPF中 PropertyPath XAML 语法 PropertyPath 对象支持复杂的内联XAML语法用来设置各种各样的属性,这些属性把PropertyPath类型作为它们的值.这篇文章讨 ...

  5. JieBaNet+Lucene.Net

    基于JieBaNet+Lucene.Net实现全文搜索   实现效果: 上一篇文章有附全文搜索结果的设计图,下面截一张开发完成上线后的实图: 基本风格是模仿的百度搜索结果,绿色的分页略显小清新. 目前 ...

  6. Websphere设备、企业部署应用程序 【应用】

    Websphere设备.企业部署应用实例 环境 名称 版本号 Linux系统 CentOS-5.6-x86_64 Oracle软件 10201_database_linux_x86_64.cpio W ...

  7. automapper如何全局配置map条件过滤null值空值对所有映射起效

    原文 automapper如何全局配置map条件过滤null值空值对所有映射起效 我们在使用automapper的时候经常会遇到这样的问题:假设展示给用户的数据我们用UserDto类,User类就是我 ...

  8. 倒计时的CountDownTimer

    直接看这里吧,我仅仅是搬运工.  定时运行在一段时候后停止的倒计时,在倒计时运行过程中会在固定间隔时间得到通知(译者:触发onTick方法),以下的样例显示在一个文本框中显示一个30s倒计时: , 1 ...

  9. The bundle does not contain an app icon for iPhone / iPod Touch of exactly &#39;120x120&#39; pixels, in .pn

    xcode 6.3 载发生时的应用'Missing recommended icon file - The bundle does not contain an app icon for iPhone ...

  10. python下载图片(2)

    #-*- coding: UTF-8 -*- import urllib2, re,datetime,time, os,sys from PIL import Image, ImageDraw, Im ...