如何复制新版本的libc?

时间:2017-04-10 13:27:33

标签: libc

我有一台计算机出于安全原因不能连接到互联网。它正在运行Linux。在一台单独的计算机上,我有代码和linux的交叉编译器。当我将程序移动到离线Linux计算机时,我无法执行它,因为错误“未找到版本`GLIBC_2.17'”

检查/ lib后,我发现我确实只有2.13版本的libc。在我的开发计算机上,我有2.22版本的所有相关文件,用于编译程序。我想以某种方式将我的开发计算机上的这个版本的libc复制到我的离线计算机上,以便我可以运行我的程序。

问题是,我似乎无法复制文件。试图这样做会产生错误:

mv: error writing ‘./libc.so.6’: No space left on device

或类似的东西。我知道这实际上并不是因为设备上没有剩余空间,因为我在设备上没有太多东西,我可以将文件复制到文件系统中的其他位置,只是没有到/ lib目录。如何将新版本的libc迁移到脱机计算机?

1 个答案:

答案 0 :(得分:1)

  

我想以某种方式将我的开发计算机上的这个版本的libc复制到我的离线计算机上,以便我可以运行我的程序。

错误地更新“离线”计算机上的libc是非常简单的方法,使其无法启动。你不应该尝试这个,除非你明白你在做什么(你显然不知道),除非你知道如何在失败的情况下恢复“离线”计算机。

最好的方法是使用“离线”计算机上的软件包管理器正确安装libc软件包(详细信息因使用的软件包管理器而异)。

如果包管理器方法不起作用,您可以复制单个文件。请注意,系统ld-linux.solibc.so.6必须始终匹配 每个动态链接的程序(您的shell,cpmv等)会破裂。

由于您需要同时更新两个文件,这怎么办?您需要cp静态链接副本。最好还有$SHELLln的静态链接副本(如果您犯了错误)。