C++ 如何静态构建qt5

C++ 如何静态构建qt5,c++,linux,qt,gcc,qt5,C++,Linux,Qt,Gcc,Qt5,我在linux环境中使用了基于Qt5.0.1的QtCreator 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: libxs

我在linux环境中使用了基于Qt5.0.1的QtCreator 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
静态编译我的项目

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


谢谢。

您测试的另一台计算机上不存在Qt共享库。因此,您需要:

  • 将共享库复制到其他计算机。或者
  • 创建一个静态Qt构建来链接应用程序
  • 仅仅将
    CONFIG+=static
    添加到.pro文件是不够的,还需要Qt静态库。因此,要执行#2,您需要获得Qt源代码并自己构建它


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

    为了静态编译一个项目,你需要构建一个静态的Qt构建。记住许可问题。抓住源代码,使用
    /configure-static-release
    构建,不管“一些人相信什么”,根据LGPL的条款,你可以自己阅读,你可以静态链接,只要你为最终用户提供了可以随意重新链接的方法。第4(d)(0)节在这一点上是明确的。@JBentley很抱歉迟了答复。。。我碰巧完全同意你的看法,但我遇到的其他人的看法不同,不管许可证的文本是什么。