如何静态构建Qt 5

14

我在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

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

于是我在我的.pro文件中添加了这一行:

CONFIG += static
编译我的项目为静态文件。
我以为我会得到一个更大的文件,但实际上得到的大小和错误都是相同的。
谢谢。

3
为了静态编译项目,您需要进行Qt静态构建。 - dtech
3
请注意有关许可问题。 - cubuspl42
1
获取源代码,并使用./configure -static -release进行构建。 - Md. Minhazul Haque
1个回答

10

在你测试的另一台计算机上没有Qt共享库。因此,您需要执行以下操作之一:

  1. 将共享库复制到其他计算机。或...
  2. 创建静态Qt构建以与应用程序链接。

仅向您的.pro文件添加CONFIG += static是不够的,您还需要Qt静态库。因此,要执行第二步,您需要获取Qt源代码并自行构建。

此外,Qt的许可证是LGPL,因此在进行静态链接时需要注意。有些人认为LGPL不允许静态链接(除非您LGPL自己的代码),而另一些人则认为它可以(只要您愿意发布应用程序的目标代码)。但这是一个完全不同的讨论。


5
不管某些人如何看待此事,根据LGPL条款,在提供终端用户自行重新链接的方式的前提下,你可以进行静态链接。第4(d)(0)节对此点非常明确。你可以在这里阅读LGPL的具体内容。 - JBentley
@JBentley 很抱歉回复晚了... 我完全同意你的看法,但我遇到过其他人,他们不管许可证文本如何陈述,都有不同的想法。 - Cutterpillow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接