我在一台最新的 Linux 机器上静态编译和链接了一个程序,然后在另一个 9 岁的 Linux 上运行它。它给了我一个错误“致命:内核太旧”并退出。具体来说,新版本是 Fedora 18(gcc 4.7.2,glibc 2.16,内核 3.7.2),旧版本是 RHEL4.8(glibc 2.3.4,内核 2.6.9)。由于它是静态链接,因此 glibc 版本无关紧要。我想这里的问题是程序调用不在旧内核中的系统调用。
如果在旧系统上开发不是一个选项,我如何在新系统中构建程序并在旧系统中运行(甚至更好,两者都可以)?我正在寻找一种在兼容模式下运行 gcc 的方法,它只调用旧的系统调用。还没有运气。