【问题标题】:How to tell how a Qt application is linked to Qt libraries?如何判断 Qt 应用程序如何链接到 Qt 库?
【发布时间】:2015-09-09 22:21:27
【问题描述】:

我正在编写一个 Qt 应用程序。

我的 Qt 许可证是 LGPL,所以我试图确定应用程序是否静态链接到 Qt 库。

有没有办法通过查看.pro文件或qmake生成的Makefile来判断?

我使用的是 TI DVSDK 4.0.0.3 附带的 Qt 4.6.3

【问题讨论】:

    标签: qt


    【解决方案1】:

    不,通过查看 .pro 文件是不可能的,因为无论 Qt 构建如何编译,.pro 文件都保持不变。毕竟,这是您的 .pro 文件,而不是 Qt 的。

    您可以查看 Makefile 中的目标链接命令,并查看目标是否与 .a 文件或 .so 文件链接。不过,即使这样也是不必要的转移。

    只需use ldd to show whether your executable is dynamically linked with Qt

    您还可以查看您正在使用的 Qt 工具包的配置选项。

    最后,LGPL 并非与静态链接不兼容。 LGPL 所要求的只是那些您分发代码的人可以将您的封闭源代码与 LGPL 库重新链接。对于动态链接,他们只需要重新构建您提供给他们的完全相同的 Qt 配置,并交换 .so/.dll 文件。对于静态链接,他们需要将您的封闭源目标文件与他们自己从您提供的源构建的 Qt 副本重新链接。提供此类目标文件的最简单方法是将项目链接到静态库。然后可以将该库与 Qt 静态库链接以生成最终的可执行文件。您需要根据要求提供项目的闭源部分作为静态库。伊纳尔!

    【讨论】:

    • 我查看了您提供的链接。不幸的是,ldd 在我的主机或目标上不可用。但是objdump -p 我看到NEEDED libQtGuiE.so.4 所以我相信它使用的是动态链接。我将对我正在使用的其他 LGPL 库进行类似的检查。我确实也在考虑将 obj 代码作为一个选项。安娜莱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2012-09-12
    相关资源
    最近更新 更多