【问题标题】:Qt for Android - Is "Bundle Qt Libraries in APK" considered as static or dynamic linking?Qt for Android - “Bundle Qt Libraries in APK”被认为是静态链接还是动态链接?
【发布时间】:2016-03-27 00:08:08
【问题描述】:

我一直在阅读这个链接:https://wiki.qt.io/Licensing-talk-about-mobile-platforms,在那个页面上,它说:

Qt for Android / Necessitas

由于 Qt for Android 使用的是 Qt 的 LGPL 版本,因此非常完美 可能(并且也推荐和支持)动态链接 创建应用程序时的 Qt 库 - 应用程序没有问题 使用 Qt for Android 的开发人员。该应用程序开发人员可以开发封闭 源代码并发布应用程序 - 不用担心。

只有静态链接 Qt 库才会有问题 使用闭源应用程序。

所以在 Qt Creator 中,在 Build 部分中有一个名为 Qt Deployment 的部分,其中包含三个选项:

  • 使用 Ministro Service 安装 Qt
  • 在 APK 中捆绑 Qt 库
  • 将 Qt 库部署到临时目录

如果我选择,在 APK 中捆绑 Qt 库仍然被视为动态链接还是会被视为静态链接(尽管从技术上讲它是动态的) ?据我所知,它是动态的,因为在 APK 文件中,我可以看到 Qt 库。唯一的区别是它们的位置。

在文件夹 /lib/armeabi-v7a/ 中有:libQt5Core.so、libQt5Gui.so、libQt5Widgets.so 等,所以这些库在那里,所以它们不是静态链接而是与最终用户链接,APK 就像一个EXE,它不需要下载外部库来运行 APK(即使从技术上讲,APK 需要 Qt 库,而 Qt 库恰好位于 APK 本身内)——这就是我问的原因。

所以要非常清楚和直接,选择“在 APK 中捆绑 Qt 库”选项是否被视为动态链接?

谢谢

【问题讨论】:

  • 别买那个都市传说——在 LGPL 下静态链接到 Qt 是完全合法的,你不需要打开你的源代码,只需提供一个指向你的目标文件的链接来满足许可证重新链接可能性的要求。
  • 感谢您的回复。我很感激。

标签: android c++ qt


【解决方案1】:

这是动态链接。 Qt 库是 .so 文件,它们捆绑在 APK 文件中。但它们仍然是 .so 文件,与可执行文件分开。

【讨论】:

  • 嘿,谢谢!这是另一个让我更加自信的链接:stackoverflow.com/questions/11607682/… - 由 SystematicFrank 提供的回复“Qt 默认使用动态链接”和“如果您关心的是 LGPL,请在编译 Qt 本身时小心。大多数 LGPL与 Qt 的冲突不是因为静态链接(因为动态是默认值),而是因为使用非默认参数编译 Qt。”就我而言,我使用的一切都是默认的和官方的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
相关资源
最近更新 更多