如何静态构建Qt 5

Mil*_*ils 13 c++ linux qt gcc qt5

我在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
Run Code Online (Sandbox Code Playgroud)

我在这个链接中找到了一些解决方案(一些链接已经死了).

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

CONFIG += static
Run Code Online (Sandbox Code Playgroud)

静态编译我的项目.

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

谢谢.

Cut*_*low 9

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

  1. 将共享库复制到其他计算机.要么...
  2. 创建一个静态Qt构建以与您的应用程序链接.

仅添加CONFIG += static到.pro文件是不够的,还需要Qt静态库.所以要做#2你需要获得Qt源代码并自己构建它.

此外,Qt是根据LGPL许可的,因此在静态链接时您需要注意这一点.有些人认为LGPL不允许静态链接(除非你是LGPL自己的代码)和其他相信它的人(只要你愿意为你的应用程序发布目标代码).但这是另一个讨论.

  • 无论"有些人相信",根据LGPL条款的条款,您可以自己阅读[这里](http://www.gnu.org/licenses/lgpl.html),您可以静态链接因为您为最终用户提供了随意重新链接的方法.关于这一点,第4节(d)(0)是明确的. (5认同)