zoukankan      html  css  js  c++  java
  • Qt应用静态编译,静态链接,去mingwm10.dll,libgcc_s_dw2-1.dll依赖问题

    Qt应用静态编译,静态链接,去mingwm10.dll,libgcc_s_dw2-1.dll依赖问题

    完全了解逻辑层次os/compiler/framework/application中静态链接、动态链接情况的,请绕道。
    linux以及Xnux的大牛,也不用看了。

    要想Qt应用做出来只是一个exe就能给客户运行,
    有两个情况,搞定即可:

    一、mingwm10.dll,libgcc_s_dw2-1.dll依赖

    这与qt无关
    用vc编译的就不存在……依赖这俩玩意的情况。

    那么mingw版下的QT呢?
    下载,静态版mingw(mingw本身和gcc都是static version)即可,见文末资源。

    二、QtCoreX.dll QtXXX.dll等依赖

    指定你的应用本身为静态编译即可。
    1、project.pro添加QMAKE_LFLAGS=-static,
    2、qt本身是静态版编译的,步骤见文末资源。
    以上俩条件都需要,虽然qt静态版的,不用满足1即可,但是
    逻辑上工程层次得指定,否则假设你是开源的,
    别的兄弟拿过去编译,可能有些入行不久的会问为什么他的编译出来的不是一个文件了,呵呵。
    而且你保不定自己就一直只有一套qt在跑,我就是静态动态版的都在用。

    资源
    --------------------------------------------------------------------------------

    1、mingw静态编译版本:
    有牛人http://code.google.com/p/qp-gcc/ 已经做好了,
    http://code.google.com/p/qp-gcc/downloads/detail?name=mingw-static-4.4.5-all.7z
    这个,下载覆盖$QTDIR/../mingw就行,实在不信任我的,覆盖前先备份,就没风险了。

    mingw和gcc编译是件不简单的事,
    至少我觉得比qt编译复杂,特别是mingw的那一堆工具和补丁,
    编译器和编译原理一直是心中的痛啊,啊啊啊。

    2、qt静态编译步骤,这里有(注意评论,有更实用的做法提出来):
    http://blog.csdn.net/MicroSky2813/archive/2010/02/01/5278096.aspx

    p.s

    至于第三种情况,msvcrt.dll 貌似winnt都带着吧,不用管。
    kener32.dll?介个……

    然后就是LGPL涉及静态链接版权问题

    我个人比较认同“涉及LGPL库的开源,没涉及的可以不开,后者调用前者的部分提供obj”说法。
    那么,Qt应用,用wrapper策略吧:
    http://devbean.blog.51cto.com/448512/313477

    好吧,聪明人会问,编译环境依赖,如mingw10.dll和libgcc_s_dw2-1.dll我看你怎么wrapper?
    就已有资料看,这俩已经public domain了。

    再啰嗦两句,release之前,用upx把你的exe压缩一下,尺寸更小,而debug版……就别了。

    最后,希望受dll依赖问题烦扰的,能明白本文第一句。

  • 相关阅读:
    开发实例
    一张图解析FastAdmin中的表格列表的功能
    fastAdmin进阶
    detailFormatter bootstrapTable
    responseHandler
    自定义PDO封装类
    bootstrapTable
    Thread Safety
    FastAdmin 基本知识流程一栏
    thinkphp5 Request请求类
  • 原文地址:https://www.cnblogs.com/czcbzc/p/13637594.html
Copyright © 2011-2022 走看看