1

这个问题可能看起来非常明显,我意识到我正在为大量的反对票投反对票,但我对 Linux 开发人员非常陌生,并且只研究了一段时间。

我一直在用 C++ 在 ubuntu 12.04(内核 3.2.0)上编写应用程序,然后通过 scp 将其复制到另一台设备上的 ubuntu 8.04(内核 2.6.30)安装。我一直注意到一些我根本无法解释的非常奇怪的行为。我天真地假设我可以在以前的版本上运行这个可执行文件,但我开始意识到事实可能并非如此。将来我必须确保我构建应用程序的 Linux 版本与它将在现场运行的版本相同吗?还是我必须直接在将要运行的设备上直接从源代码构建应用程序???我对 Linux 开发人员非常陌生,但对 C++ 并不陌生,所以我意识到这个问题可能看起来很简单,但这是我在书籍/教程等中根本没有看到的问题。

4

1 回答 1

3

大多数时候,阻止你的不是内核,而是 glibc。

glibc 是向后兼容的,这意味着编译和链接到旧版本的程序将在运行时与新版本完全相同。反之则不兼容。

最好的当然是建立在你想要运行它的发行版上。如果您不能这样做,请在具有最旧 glibc 安装的那个上构建。

构建和链接到比系统 glibc 更旧的 glibc 也非常困难,安装/构建 glibc 往往会使您的系统更加混乱,超出其价值。使用旧 Linux 设置 VM,然后改用它。

于 2012-06-13T11:53:09.743 回答