gpt4 book ai didi

c - 在不同发行版上执行 AppImage 时找不到 GLIBC 版本

转载 作者:行者123 更新时间:2023-12-05 05:43:59 44 4
gpt4 key购买 nike

我目前正在开发一个我想发布到许多发行版的应用程序。到目前为止,我一次在一个发行版上完成了所有测试(在同一个发行版上编译和运行)。但是当我从我的主计算机 (Arch Linux) 上的编译中获取输出的 AppImage,并尝试在虚拟机 (Ubuntu 20.04) 中运行它时,它给我以下错误:

gabriel@gabriel-VirtualBox:~/Downloads$ ./Neptune.Installer-x86_64.AppImage ./Neptune.Installer-x86_64.AppImage:/lib/x86_64-linux-gnu/libc.so.6:找不到版本“GLIBC_2.34”(./Neptune.Installer-x86_64.AppImage 需要)

对此有哪些可能的解决方案?我考虑过静态链接库,但我不确定这是否会导致许可问题,因为我的程序不是开源的。除此之外,我可能会考虑简单地在一个非常旧的发行版(如 Ubuntu 12 或其他发行版)上编译我的程序,但我不知道这对其他发行版的影响如何(例如,我的程序是否仍能在旧版本上运行Fedora 的?)

这可能是一个复杂的问题,但我只想知道解决此问题的最佳方法是什么。换图书馆?静态链接?在旧发行版上编译?让我知道你的想法。

最佳答案

I've considered statically linking the library, but I'm unsure if that might cause licensing issues,

是的。

very old distribution such as Ubuntu 12 or something, but I won't know how well that carries over to other distros

它没有(alpine linux)。如果您编译软件,则必须使用编译它所针对的一组库来运行它。即使您在“非常旧的发行版”上编译,也可能会有更改。

publish to many distributions

选择要支持的发行版列表和这些发行版的版本。告诉用户您将支持这些分发版本。 (https://partner.steamgames.com/doc/store/application/platforms -> Steam 仅正式支持运行 Ubuntu 12.04 LTS 或更新版本的 Ubuntu..)。

分别针对分发+版本的每个组合进行编译,并针对每个此类分发版本单独分发您的软件。为了方便用户,使用您的软件为特定的分发包管理器创建和共享包存储库。在 https://www.zabbix.com/download只有这么多的组合可供选择。对 Docker 虚拟化环境中的 CI/CD 感兴趣。我喜欢 gitlab。

或者使用所有依赖的共享库分发您的应用程序。将它们与操作系统捆绑在一起,并以 docker 镜像或 qemu/virtualbox 虚拟镜像的形式分发。或者仅使用共享库文件分发,并使用 LD_PRELOAD 的包装器。就像 Steam 一样。在您的系统上安装 Steam,然后在 ~/.steam/steam/ubuntu12_64 中查看会发生什么。

并雇用一个层来解决许可问题。

关于c - 在不同发行版上执行 AppImage 时找不到 GLIBC 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71686498/

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