Debian 7:未找到版本“GLIBC_2.15”

Debian 7:未找到版本“GLIBC_2.15”

我想和朋友一起在朋友的 VPS 上使用 Debian 7 的 Unturned 服务器上私下玩游戏。我按照指示,但是当我启动服务器时,这出现了

请帮忙,谢谢

答案1

简短回答

Debian Wheezy 上的GNUlibc库太旧,无法运行您需要的程序。

长答案

  1. 这个广泛使用的标准 C 库 GNU libc(简称“glibc”)努力保持与旧应用程序的向后兼容性,同时在实现的功能方面仍在向前迈进。

  2. 为了实现这一点,它对其“符号”进行了版本控制。

    符号是库“导出”的函数和变量的名称 - 可供与库“链接”的程序代码使用。

  3. GNUlibc库的每个新版本都会在其导出的符号中进行某些更改,并会获得一个特定的符号表条目,用于标识此库的特定版本。您可以将其视为此库提供的特定保证功能集的“句柄”。

    这是由编译器透明地完成的,它将已编译程序的代码与 glibc 链接起来。

  4. 无论使用什么编译器来编译和链接你的程序,它都可以在安装了 glibc 2.15 的系统上运行,因此生成的程序现在“需要” glibc 2.15 或更高版本。

现在看看我的 Debian Jessie (8.0) 有什么 glibc 版本:

$ apt-cache policy libc6
libc6:
  Installed: 2.19-18+deb8u4
  Candidate: 2.19-18+deb8u4
  Version table:
 *** 2.19-18+deb8u4 0
        500 http://http.debian.net/debian/ jessie/main amd64 Packages
...

但如果我们看看Wheezy 有,我们将看到它是 2.13 — 比你的程序所需的版本“早”两个版本。

该怎么办呢?

如果无法重建该程序(我相信不可能),那么您只有两个选择:

  • 以某种方式将较新的 glibc 引入系统并让程序“看到”它。

    理论上,应该可以构建一个较新的 glibc,并在过程中以某种方式对其进行配置,以便将其安装在非标准位置 - 例如在/opt/glibcX.Y或类似的地方。

    有了较新的 glibc 版本,您可以采用标准“技巧”让您的程序使用非标准库:LD_PRELOAD环境变量。如下所示:

        $ LD_PRELOAD=/opt/glibcX.Y/libc6.so ./myprogram
    
  • 升级您的 Debian 安装。

如果您不太热衷于建造东西和修理低级机械,第二种选择可能是解决手头问题的更简单的方法。

相关内容