这个问题可能看起来非常明显,我意识到我正在为大量的downvotes做好准备,但我对Linux开发人员来说是一个新手,并且只是在研究它一段时间了。
我一直在用C ++编写ubuntu 12.04(内核3.2.0)的应用程序,然后通过scp将其复制到另一台设备上的ubuntu 8.04(内核2.6.30)安装。我注意到一些我根本无法解释的非常奇怪的行为。我天真地认为我可以在以前的版本上运行这个可执行文件,但是我开始意识到这实际上并非如此。在将来我必须确保我构建我的应用程序的Linux版本与它将在该字段中运行的版本相同吗?或者我必须直接在它将运行的设备上直接从源代码构建应用程序???我是Linux开发人员的新手,但对C ++并不陌生,所以我意识到这个问题可能看起来很容易,但这是我在书籍/教程等中没有看到的那种问题。
答案 0 :(得分:3)
大多数时候,不是内核阻止你,它是glibc。
glibc是向后兼容的,这意味着编译并链接到旧版本的程序在运行时与新版本的工作方式完全相同。另一种方式不兼容。
最好的当然是建立你想要运行它的发行版。如果你不能这样做,建立在最旧的glibc安装的基础上。
与系统glibc相比,构建和链接到较旧的glibc也很困难,安装/构建glibc往往会使系统陷入困境,而不是它的价值。使用旧Linux设置VM,然后使用它。