现金求助QTWebkit交叉编译环境搭建

blog文章地址:
WebKit是个好东西,做爬虫、显示网页还是想用HTML来做桌面应用的界面都可以用他,不过一直以来都觉得自己编译webkit费力不讨好,所以都是用的qt官方编译好的,至于静态编译webkit,我之前一直以为是根本不可能的。后来看qt forum上说其实是可以的,不过是因为开源协议的问题qt默认的静态编译只是把webkit给排除了,自己编译一下webkit就好了,既然如此,那我就当小白试一下。不过最后发现静态编译webkit其实也不难,就是比较麻烦,占用了几十个G的硬盘历时一天终于把这玩意编译完了。所以简单记一下编译的流程,方便大家。不过得提醒大家闭源项目静态链接qt和webkit是违反LGPL协议的,除非你把你的程序以GPL协议开源,要不就是违法的。
首先是乱七八糟的工具的安装
1.,我机器上本来就用py 2.7和3.3,不过编译的时候用的是2.7
2.,我装的是 2.2.1,官网上说需要ruby,不过编译的过程中我没发现有什么地方用到这玩意,而且在windows上装个ruby也不是太有用,各位可以先不装他,等编译的时候遇到问题再装也不迟,我就不去试到底需不需要了.....
3.,webkit和OpenSSL的编译脚本就是perl写的,这个是铁定要用了
4.,我也不知道为什么要用到这玩意,我明明选的是-opengl desktop,估计是qt的一个bug
4.一个编译器,看你自己想用什么了,我用的是vs2013
这些都装好了之后就是加两个第三方的库,icu和OpenSSL,icu是编译webkit所必须的,OpenSSL不是必须的,前提是你不打算用webkit访问https的网站...
我一开始尝试自己编译icu,这货倒也不是太难编译,不过就是编译选项中没有任何方法能改成使用静态运行时的,要自己改config和makefile文件,我懒得动弹,就找了个现成的编译好的,不过用这里的icu有个问题,就是它提供的静态编译的icu库木有pdb调试信息,在链接的时候会有一堆LNK4099的warning,这傻逼warning虽然可以确定是完全人畜无害的(我们几乎没可能去调试icu里面的代码),但是因为VS有个操蛋的bug,这个wrning是无法屏蔽的,而因为QtCore也用到了icu,于是你每个qt项目都会看到一堆LNK4099的warning.....每次编译的时候...WTF...如果不想看到,就自己编译icu吧,这个链接也给了让icu静态链接运行时的patch,自己动手丰衣足食。
编译 OpenSSL我就不多说了,比较简单,我之前也写过
都搞定之后,开始编译Qt,直接下载zip格式的,不要用tar的,里面缺少configure.exe,那是给linux用的,解压,我放在F:\qt-everywhere-opensource-src-5.4.1\,然后是修改mkspace中的配置文件,因为Qt也没有能从命令行修改为使用静态运行时的选项,找到qtbase\mkspace\编译器名\qmake.conf,编辑,把里面的两个MD都改成MT,一个MDd改成MTd就可以了,我这里用的是VS,gcc的话应该是把QMAKE_CXXFLAGS一项中加个-static,保存就可以了。
然后是设置环境变量,这里我建议直接屏蔽系统的环境变量,全部都重新设置,因为系统装安装的乱七八糟工具都有可能影响编译,比如说装了msysgit什么的,里面的perl.exe就会有影响。开个命令提示符CD到源码的根目录,
set PATH=C:\WC:\Windows\System32;D:\Ruby22-x64\C:\Python27;C:\Python27\SF:\icu\F:\icu\F:\gles_sdk\x86;D:\Perl64\F:\openssl\
set INCLUDE=F:\icu\F:\gles_sdk\F:\openssl\
set LIB=F:\icu\F:\gles_sdk\x86;F:\openssl\
&D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat& x86
上面的路径请自行换成对应的目录。然后就可以configure了:
configure -prefix D:\Qt\Static541_2013 -debug-and-release -opensource -static -nomake examples -no-compile-examples -opengl desktop -openvg -platform win32-msvc2013 -target xp -sse4.2 -no-avx -no-avx2 -icu -openssl-linked
configure完直接nmake 然后nmake install,经过漫长的等待,没问题的话在D:\Qt\Static541_2013就可以看到编译好的lib了。
这时候静态版本的Qt已经编译好了,接下来就该搞webkit了。
编译完之后不要关闭命令提示符,接着执行以下几条命令:
set PATH=%PATH%D:\Qt\Static541_2013\F:\qt-everywhere-opensource-src-5.4.1\gnuwin32\
set INCLUDE=%INCLUDE%D:\Qt\Static541_2013\
set LIB=%LIB%D:\Qt\Static541_2013\D:\Qt\Static541_2013\D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\qml1D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\D:\Qt\Static541_2013\plugins\
最后那个set命令中的一大堆plugin的lib目录应该是不用加的,qmake会自己找到这些lib,但是我没测试过(也不想去试),谁有兴趣可以试试..然后就是编译webkit了..
perl F:\qt-everywhere-opensource-src-5.4.1\qtwebkit\Tools\Scripts\build-webkit --qt --prefix=d:\Qt\QtWebkit
这里的prefix好像加和不加都一个样,反正编译完都会自动把生成的lib给放到Qt SDK的目录下,这个prefix指定的目录却什么也没有。炒鸡漫长的等待..看机器性能,我反正是编译了大约5、6个小时,期间机器卡的不行,就只能看个网页或者电子书。
编译还算顺利,只遇到了一个错误,原因是没有判断是否是静态编译,用了dllimport:
打开F:\qt-everywhere-opensource-src-5.4.1\qtwebkit\Source\WebCore\platform\qt\QtTestSupport.h,把
#if defined(BUILDING_WEBKIT)
#define TESTSUPPORT_EXPORT Q_DECL_EXPORT
#define TESTSUPPORT_EXPORT Q_DECL_IMPORT
#if defined(BUILDING_WEBKIT)
#define TESTSUPPORT_EXPORT /*Q_DECL_EXPORT*/
#define TESTSUPPORT_EXPORT /*Q_DECL_IMPORT*/
重新运行上面的编译命令,一路顺畅,终于编译完了...编译完成后他会自动把qtwebkit的lib拷贝到你的qt sdk所在的目录,接下来就是配置qt creator或者qt vs plugin了,没什么好说的了
我试着编译了一下qt example中的browser项目,得到了一个51.1mb的exe,upx -9一下就成了16.6m,除了我手残编译qt的时候忘了加openssl所以不能访问https的网站之外功能没有缺失(上面教程是按照加了openssl来写的),我也懒得再编译了,有空再说吧。
另外根据我编译qt得出的经验,一般Qt5.X.0编译都或多或少有各种问题,要么语法问题,要么少东西,要么路径不对,但是过不久会放出一个5.X.1和5.X.2就一般没什么问题了,为什么会这样就不知道了。
本文目前还没有评论……qt 编译的问题,求助_百度知道
qt 编译的问题,求助
提问者采纳
QTextBrowser有一个继承自QTextEdit的成员函数是void QTex旦敞测缎爻等诧劝超滑tEdit::append(const QString & text) [slot]显然,其形参是一个QString类型,从你的错误提示可看出,你给它传递了一个float的实参,肯定会出错。试试ui-&textBrowser_3-&append(QString::number(r[i]));
提问者评价
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁在VS2008下编译调试QtWebKit_中华文本库
第1页/共4页
在VS2008下编译调试QtWebKit 安装环境
1. 安装VS2008,最好打上各种补丁比如:
? Microsoft Visual Studio 2008 Service Pack 1 (iso)
(/downloads/en/details.aspx?displaylang=en&FamilyID=b5-4c67-bd99-84e525b5ce61)
? Visual Studio 2008 Service Pack 1 ATL Security
(/downloads/en/confirmation.aspx?familyid=294DE390-3C94-49FB-A014-9A38580E64CB&displaylang=en)
2. 安装 GNU tools (Install from http://gnuwin32.sourceforge.net/packages.html):
? Bison 2.3
? Gperf 3.0.3
? Flex 2.5.34
? LibIconv
注意安装路径不能有空格 (i.e. not in "C:\Program
我安装到了C:\ProgramFiles\GnuWin32\bin
3. 安装ActivePerl
(/Products/ActivePerl/)
4. 安装Cygwin
( http://svn.webkit.org/repository/webkit/trunk/WebKitTools/CygwinDownloader/cygwin-downloader.zip)
7. 下载源代码 /downloads/windows-cpp-vs2008 设置环境变量 QTDIR=C:\work\WebKit\qt-everywhere-opensource-src-4.6.3 给Path追加环境变量 Path=P%QTDIR%\bin 打开VS的命令行窗口Visual Studio 2008 Command Prompt 执行:cd %QTDIR% 执行:congifure -release –shared –platform win32-msvc2008 执行:nmake (漫长的等待...)
编译QtWebkit
1. 下载webkit(http://nightly.webkit.org/builds/trunk/win/1),我用的版本是WebKit-r66718
第1页/共4页
寻找更多 ""6900人阅读
1、修改环境变量工具推荐:Rapid Environment Editor。官网:
修改前请先备份当前的环境变量。然后:
(1)检查系统变量path,删除有关mingw其他版本等信息,以免与后续的mingw32-make冲突。
(2)检查用户变量INCLUDE、LIB、PATH、MSDevDir和MSVCDir,删除有关\Microsoft Visual Studio\VC98的信息,因为它们会与后续的mingw32-make冲突,导致编译出错。
2、在电脑上安装mingw编译器,假设路径安装在C:\Qt\mingw32。将C:\Qt\mingw32\bin添加进环境变量path,打开DOS命令行输入gcc --version和g++ --version和mingw32-make --version验证编译器安装成功。我用的MinGW版本是V4.8.2,软件来自Qt官网:http://download.qt-project.org/development_releases/prebuilt/mingw_32/i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z
3、解压qt-everywhere-opensource-src-4.8.6.zip并进入目录。例如:D:\qt-everywhere-opensource-src-4.8.6\
4、依次执行以下DOS命令:
(1)configure -debug-and-release -opensource -prefix &D:\Qt4.8.6&&-platform win32-g++ -nomake demos -nomake examples
常见的使用选项说明:
-debug-and-release & &编译debug和release版
-opensource & & &选择开源协议并确认
-platform win32-g++ & 使用mingw编译
-prefix &D:\Qt4.8.6& 指定编译结果目录,如果未指定则默认当前
-shared 创建和使用共享Qt库
-static 创建和使用静态Qt库
-nomake demos -nomake examples 不编译例程
-nomake tests 不编译tests
-skip qtwebkit 忽略qtwebkit,因为编译它特别消耗时间
-mp 使用多核优化编译
(2)mingw32-make
(3)mingw32-make install
5、编译完成后,把C:\Qt\mingw32\bin\路径下的三个文件libgcc_s_dw2-1.dll、libstdc++-6.dll和libwinpthread-1.dll拷贝到D:\qt-everywhere-opensource-src-4.8.6\bin\。另外,也请把步骤1备份的环境变量还原。
6、修改Qt安装路径
最初编译时选择的路径是D:\Qt4.8.6\。如果想将它复制到其他盘符,并且改名,例如:C:\Qt\4.8.6_MinGW。这样一来会有问题吗?是的,会有问题,因为Qt有绝对路径依赖症。改名后C:\Qt\4.8.6_MinGW\bin\的exe执行程序都会出问题,要么程序打不开,要么多国语言发生异常。用记事本打开C:\Qt\4.8.6_MinGW\bin\qmake.exe,查找关键字“qt_prfxpath”,可以看到里面含有原始的安装路径。我们不可以手动去修改qmake.exe,真正有效的解决方法是:
在C:\Qt\4.8.6_MinGW\bin\路径下创建一个qt.conf文件,内容为
Prefix = C:/Qt/4.8.6_MinGW
请注意:qt.conf文件必须是ANSI格式,并且Prefix的斜杠风格采取的是Linux的,而非Windows,否则会失效。或者使用&Prefix = .. &,如此一来,任意路径有效。
7、参考文献
Qt在各平台上的搭建qt-everywhere
用mingw静态编译Qt4.8.2和Qt5.1.1
QT编译./configure参数的详细解释
QT5.1编译后的安装目录问题
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:526914次
积分:5842
积分:5842
排名:第2615名
原创:135篇
转载:235篇
评论:76条
(1)(2)(5)(5)(31)(22)(21)(8)(20)(24)(31)(22)(19)(1)(10)(13)(34)(7)(8)(6)(8)(15)(22)(9)(23)(2)}

我要回帖

更多关于 交叉编译环境搭建 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信