【问题标题】:Independent qt application and dependency packing in windows and linuxwindows和linux中独立的qt应用和依赖打包
【发布时间】:2012-01-24 07:46:05
【问题描述】:

我使用 QtCreator 为 Linux 制作了一个应用程序。该应用程序使用两个外部库,qextserialportqwt。我想部署应用程序,使其依赖的所有库都与可执行文件一起部署。

当我为 Windows 制作应用程序时,我只是将 .dll 文件复制到 app.exe 文件夹中,它就可以工作了。但是如何在 Linux 上做到这一点?

【问题讨论】:

    标签: linux qt deployment


    【解决方案1】:

    在 Linux 中,您可以:

    1) 静态链接依赖项

    2)windows风格打包依赖,设置环境变量LD_LIBRARY_PATH指向包含动态库的子目录

    [更新]

    阅读man ld,如果默认情况下未编译库的静态版本(look at this tutorial if you can't tell the difference),您可能必须编译它们。

    synthesizerpatel 的精彩评论,如果库使用 autoconf(很多 linux 软件都这样做),它有 --enable-shared 和 --enable-static 之类的选项。

    【讨论】:

    • 我读过关于静态链接的文章,但不知道该怎么做。你能详细说明一下吗?
    • 将库编译为静态(如果它是由 autoconf / configure 构建的,大多数都有一个选项,--enable-shared 或 --enable-static)。当你有一个静态库时,它将是 libname.a,而不是 libname.so 或 libname.dylib (mac)。然后,当您链接时,只需将共享库的路径指定为对象的一部分,或 -L/where/the/dota/lives -lname
    • @Sanjay 这个答案包含了我建议的两种方法,因此我建议您将其标记为这样!
    • 如果他走规范的路线来分发适合主要发行版的软件包,这都不是必需的,对吧?
    • 我尝试了窗口样式,并设置了 LD_LIBRARY_PATH .Bt 问题是 ldd 命令将 libqwt.so.6 显示为依赖关系,但 lib 中有 4 个名为 libqwt.so 的文件具有不同的版本。做我需要所有 libqwt.so 文件或 ldd 显示的特定文件。
    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2019-03-06
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2023-03-08
    相关资源
    最近更新 更多