我有一台计算机出于安全原因不能连接到互联网。它正在运行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迁移到脱机计算机?
答案 0 :(得分:1)
我想以某种方式将我的开发计算机上的这个版本的libc复制到我的离线计算机上,以便我可以运行我的程序。
错误地更新“离线”计算机上的libc是非常简单的方法,使其无法启动。你不应该尝试这个,除非你明白你在做什么(你显然不知道),除非你知道如何在失败的情况下恢复“离线”计算机。
最好的方法是使用“离线”计算机上的软件包管理器正确安装libc软件包(详细信息因使用的软件包管理器而异)。
如果包管理器方法不起作用,您可以复制单个文件。请注意,系统ld-linux.so
和libc.so.6
必须始终匹配 或每个动态链接的程序(您的shell,cp
, mv
等)会破裂。
由于您需要同时更新两个文件,这怎么办?您需要cp
的静态链接副本。最好还有$SHELL
和ln
的静态链接副本(如果您犯了错误)。