打包使用共享库编译的qt应用程序

时间:2010-03-09 04:05:45

标签: qt packaging

我最近在linux机器上下载了qt嵌入式演示源代码。以下是计划运行期间的结果

  1. 我在x86机器上静态编译并在x86机器上运行应用程序运行正常。但是,当我将静态编译的二进制文件带到Atom平台的其他机器时,它会运行一些缺少的小部件。我发现插件不能移植静态编译。任何人都可以告诉我这是真的吗?如果没有人可以告诉我它的步骤吗?
  2. 我用共享库动态编译它。然后在linux上得到了一个执行者。我做了“ldd MyAppName”。它向我展示了它正在使用的共享库文件。但我不知道如何打包这些。任何人都可以告诉我打包它的步骤吗?
  3. 我查看了有关在X11-linux平台上部署qt应用程序的文章。但它并不完整。任何人都可以给我详细的步骤吗?

    任何帮助将不胜感激......

3 个答案:

答案 0 :(得分:2)

你要么有一个发行版,它不支持原子或库,它们没有编译支持它。无论哪种方式 - 系统某处(或你的qt)的某些东西都没有为原子编译

答案 1 :(得分:1)

问题在于您正在编译您的应用程序,其库(静态或动态)适用于x86,而不适用于Atom。也许您可以创建某种胖二进制文件(lipo?),以便您的应用程序的各个部分可以在x86和Atom上运行,但使用仅x86库的位将无法在Atom上运行。 (对吗?这是你问题的简明定义?)

如果你有不在Atom上运行的库的源代码,并且它们对你很重要,你应该考虑将代码移植到Atom。如果是开源代码,您可以为项目做出贡献。虽然你没有提供很多细节,但我的(非常通用)方法是在Atom机器上获取代码,为库编写一个非常短的测试应用程序,并解决问题。

<#> Re#2:编译应用程序和链接到共享库或动态库之间没有什么区别。在您的x86机器上,如果您将此代码(这些“插件”)编译为动态库,则与将这些二进制文件静态链接到应用程序中的情况几乎相同。这些库可以在x86上运行,无论它们是动态链接还是静态链接。

我不确定这是否有帮助 - 如果您将二进制Qt插件作为静态或动态库而没有源代码,那么您运气不好。提交错误报告。如果你有源代码,你可以做更多。

答案 2 :(得分:1)

我只是动态编译我的应用程序并移植到原子平台。我找到了依赖项并移植了它们,并将目标机器上的环境变量LD_LIBRARY_PATH设置为我的移植共享库,并且它工作正常。谢谢大家的建议