【问题标题】:How to build Qt 5 statically如何静态构建 Qt 5
【发布时间】:2013-02-26 18:05:17
【问题描述】:

我在 linux 环境中使用基于 Qt 5.0.1 的 Qt Creator 2.6.2。该应用程序在我进行编译的计算机上运行良好,但是当我在另一台计算机上执行它时出现如下错误:

error while loading shared libraries: libQt5WebKitWidgets.so.5: cannot open shared object file: No such file or directory
error while loading shared libraries: libxslt.so.1: cannot open shared object file: No such file or directory

我在这个link 中找到了一些解决方案(一些链接已失效)。

所以我在我的 .pro 文件中添加了这一行:

CONFIG += static

静态编译我的项目。

我以为我会得到的文件会更大,但我得到了相同的大小和相同的错误。

谢谢。

【问题讨论】:

  • 你需要构建一个静态的Qt构建才能静态编译一个项目。
  • 并牢记许可问题。
  • 获取源码,用./configure -static -release构建

标签: c++ linux qt gcc qt5


【解决方案1】:

Qt 共享库在您测试它的另一台计算机上不存在。所以你需要:

  1. 将共享库复制到您的另一台计算机。或者...
  2. 创建一个静态 Qt 构建以与您的应用程序链接。

仅将CONFIG += static 添加到您的.pro 文件是不够的,您还需要Qt 静态库。因此,要执行 #2,您需要获取 Qt 源代码并自己构建它。

另外,Qt 是在 LGPL 下获得许可的,因此在静态链接时您需要注意这一点。有些人认为 LGPL 不允许静态链接(除非您 LGPL 您自己的代码),而另一些人则认为它允许(只要您愿意为您的应用程序发布目标代码)。但这是另一回事。

【讨论】:

  • 不管“有些人相信什么”,根据 LGPL 的条款,您可以自己阅读here,只要您提供最终的方法,您就可以静态链接-用户随意重新链接。第 4(d)(0) 节在这一点上很明确。
  • @JBentley 很抱歉回复晚了...我碰巧完全同意你的观点,但我遇到的其他人的看法不同,不管许可证的文本是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
相关资源
最近更新 更多