gpt4 book ai didi

linux - 为多个 Linux 发行版构建 Qt 应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:47 24 4
gpt4 key购买 nike

我正在使用 Qt 开发跨平台应用程序,该应用程序不得依赖于操作系统预安装的库。我对 Windows 没有任何问题:我需要做的就是将 .dll 文件复制到可执行文件目录中。对于各种基于 linux 的系统,我使用的脚本执行以下步骤:

  1. 运行qmake
  2. -Wl,-rpath,./ 附加到 Makefile 的 LFLAGS 指令中,使依赖搜索也在当前目录中运行
  3. 运行次数
  4. 使用 ldd -v -r 获取所有应用程序依赖项,并将可执行文件及其依赖项复制到另一个文件夹中

在构建应用程序的相同操作系统(和相同版本)的全新安装(没有 Qt)上运行应用程序运行良好,但在另一个操作系统/另一个版本上运行它由于一些错误而失败。

没有依赖项的构建不是一个可行的选择,因为该应用程序可能会在没有互联网访问和/或预安装 Qt 的机器上使用。而且我也不能使用静态构建,因为需要 QWebKit 并且它不支持静态构建。

我构建应用程序的系统和我尝试运行它的系统的不同组合会产生不同的错误:

relocation error: ./libcrypto.so.7: symbol __libc_enable_secure, version GLIBC_2.0 not defined in file ld-linux.so.2 with link time reference

relocation error: ./libc.so.6: symbol __libc_enable_secure, version GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time reference

有什么想法吗?

最佳答案

我不认为这是可行的,将您自己的库捆绑在一起会带来太多问题。商业供应商通常有一个明确支持的平台的简短列表(分发 + 版本 + 架构组合)。

对于每个平台,如果可用且合适,请使用系统 Qt。比如在RHEL6/CentOS6上,系统Qt是4.6.2,所以你可能想链接自己在CentOS6上编译的Qt。

应该这样做的方法是建立持续集成系统,这样您就可以在虚拟机中拥有目标分布,然后自动脚本编译并在所有这些分布上运行测试。这不必非常复杂,至少您需要在每个 VM 中运行一个 cron 脚本,通过电子邮件发送/上传结果,以及一个配置/脚本来启动所有 VM。

关于linux - 为多个 Linux 发行版构建 Qt 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18718397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com