C++ 如何静态构建qt5
我在linux环境中使用了基于Qt5.0.1的QtCreator 2.6.2。该应用程序在我进行编译的计算机上运行良好,但当我在另一台计算机上执行它时,会出现如下错误: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
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共享库。因此,您需要:
CONFIG+=static
添加到.pro文件是不够的,还需要Qt静态库。因此,要执行#2,您需要获得Qt源代码并自己构建它
此外,Qt是根据LGPL授权的,因此在进行静态链接时需要注意这一点。有些人认为LGPL不允许静态链接(除非你使用自己的LGPL代码),有些人则认为它允许静态链接(只要你愿意为你的应用程序发布目标代码)。但是这是一个完全不同的讨论。为了静态编译一个项目,你需要构建一个静态的Qt构建。记住许可问题。抓住源代码,使用
/configure-static-release
构建,不管“一些人相信什么”,根据LGPL的条款,你可以自己阅读,你可以静态链接,只要你为最终用户提供了可以随意重新链接的方法。第4(d)(0)节在这一点上是明确的。@JBentley很抱歉迟了答复。。。我碰巧完全同意你的看法,但我遇到的其他人的看法不同,不管许可证的文本是什么。