zoukankan      html  css  js  c++  java
  • VS2012 + Qt 4.8.3 + OpenSSL

    Qt应用中,经常有需要用到SSL的地方,例如XMPP等。Qt SDK中的Qt支持SSL,而单独下载的Qt library则一般不带SSL。如果需要SSL支持则需要我们自己编译。

    1.安装Perl

    机器上必须先安装Perl,无论编译OpenSSL还是Qt,都需要Perl的支持。Windows上可以安装这个http://strawberryperl.com/

    2. 编译OpenSSL

    到OpenSSL的网站http://www.openssl.org/source/下载最新的OpenSSL代码:openssl-1.0.1c

    将代码解压后,根目录中有一个INSTALL.W32的文件,里面就是Windows下的编译方法。

    启动VS2012工具命令行,在开始菜单Microsoft Visual Studio 2012\Visual Studio Tools这个目录下,该目录下有多个命令行,我选择的是“VS2012 x86 本机工具命令提示”这一个。

    # 首先,切换到Openssl代码的根目录
    > cd openssl\source\path

    # 如果你安装了NASM,可以用汇编的形式编译,以加快Openssl的运行速度 # 执行下面两句
    > perl Configure VC-WIN32 --prefix=d:\library\openssl > ms\do_nasm # 如果不想使用汇编编译,则执行下面两句就可以 # --prefix是指定你要把OpenSSL安装的位置 > perl Configure VC-WIN32 no-asm --prefix=d:\library\openssl > ms\do_ms # 开始编译 > nmake -f ms\ntdll.mak # 安装到prefix指定的目录中 > nmake -f ms\ntdll.mak install

    3. 编译 Qt 4.8.3

    http://qt-project.org/downloads下载Qt4.8.3的代码,注意不要下libraries,下source code.或者直接点这个下载qt-everywhere-opensource-src-4.8.3.tar.gz

    3.1 修改MAKESPEC

    Qt4.8.3中并没有VS2012的MAKESPEC。我们修改一下VS2010的MAKESPEC,用它来代替VS2012.

    打开Qt代码根目录下的\mkspecs\win32-msvc2010\qmake.conf这个文件。

    把其中的
    
    QMAKE_COMPILER_DEFINES += _MSC_VER=1600 WIN32
    
    替换为
    
    QMAKE_COMPILER_DEFINES += _MSC_VER=1700 WIN32

    3.2 修正Webkit编译的问题

    Webkit库中有一个HashSet.h的文件会导致编译失败,Stack Overflow上有人给出了解决办法在这里
    将Qt根目录下的src\3rdparty\webkit\Source\JavaScriptCore\wtf\HashSet.h这个文件替换为这个文件的内容。

    另外一个编译的问题是src\3rdparty\webkit\Source\WebCore\platform\DefaultLocalizationStrategy.cpp这个文件提示“常量中有换行符”

    // 打开这个文件会会发现第327行 “<selection>”的引号是全角的,而文件编码是UTF8,不带bomb的
    return WEB_UI_STRING("Look Up “<selection>”", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
    
    // 替换为
    return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));

    3.3 编译Qt

    完成以上准备工作后就可以进入VS2012命令行进行Qt的编译工作了。

    # 切换到Qt代码的根目录
    > cd  qt\source\dir
    
    # 执行configure
    # 如果找不到configure,那你一定是切换到了错误的目录
    # 最后的-I 和 -L 表示使用我们前面编译的Openssl库
    > configure -mp -opensource -nomake demos -nomake examples -platform win32-msvc2010 -openssl -I D:\library\openssl\include -L D:\library\openssl\lib
    
    # 在提示Copyright的时候选择 y
    
    # configure完成后,如果一切正常,会提示你nmake,
    # 这时nmake编译即可
    > nmake

    # 耐心等待一两个小时吧。编译时间到了。

    4 测试一下

    这里有一个使用Qt和Ssl,server和client端的例子 https://github.com/e7868a/qt-ssl

  • 相关阅读:
    声明、定义本质的区别:有无内存的分配
    typedef 与 define 的区别
    Linux内核中链表的学习
    C语言数据类型的转换
    状态机
    170311php添加留言页面
    170314网络编程之TCP聊天窗口
    php课堂2简单作业+文件上传之案例
    php案例2——用户列表页
    学生管理系统
  • 原文地址:https://www.cnblogs.com/E7868A/p/2771501.html
Copyright © 2011-2022 走看看