【问题标题】:Static libraries in Qt 5.14 MinGW toolchain? (default Qt installation)Qt 5.14 MinGW 工具链中的静态库? (默认 Qt 安装)
【发布时间】:2020-04-11 19:49:55
【问题描述】:

刚才我注意到默认Qt安装附带的MinGW Toolchain,至少是Qt 5.14,带有一个lib目录和libQt5*.a文件。这些文件是静态库吗?

我这么认为是因为:

  1. 它们的大小与我静态编译 Qt 以进行发布时得到的大小相似。
  2. $file ./libQt5Core.a 输出 ./libQt5Core.a: current ar archive,与静态编译的输出相同。

如果它们确实是静态库,我如何告诉 QMake(例如编辑 .pro 文件)链接到那些而不是链接到共享的?强>

【问题讨论】:

    标签: c++ qt qt5 static-libraries static-linking


    【解决方案1】:

    那些文件是静态库吗?

    没有。它们不是静态的。 Qt 的默认在线安装程序仅提供共享库。那个 *.a 文件就是所谓的导入库。

    导入库是一个 .a 或 .lib 库,但它只包含告诉链接器/操作系统您的程序如何与 dll 交互所需的一些信息。

    如果您出于某些原因需要构建 Qt 静态窗口,您有一些选择:

    • HARDyourself构建整个Qt(或所需模块)。

    • EASY使用vcpkg:vcpkg install qt5:x64-windows-static

    如果您出于某种原因需要 MinGW,可以使用 vcpkg 创建自定义 MinGW triplet。但我建议你坚持使用 MSVC。

    【讨论】:

    • 为了确定您所说的,我通过离线安装程序安装了 Qt。同样适用。您所说的信息位 与我在构建Qt 时获得的静态Qt 库的大小或多或少相同这一事实不符。它们很重。
    • 顺便说一句,感谢您提供有关 vcpkg 的提示。如果我可以跳过 Qt 的构建,那可能会为我节省很多工作,你应该为此投票。只是希望我不会像个人构建的 Qt 那样遇到 Qt Quick Controls 2 应用程序的随机崩溃。
    • @lateo96 这些二进制文件是动态的。 Qt 公司不提供静态二进制文件。二进制文件的大小与运行时/链接类型无关,Qt 只是巨大的。您可以尝试使用DUMPBIN 调查运行时/链接类型。
    • 谢谢。在 Qt 工具链中看到 .a 库让我有些困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 2013-12-30
    相关资源
    最近更新 更多