【发布时间】:2012-12-31 01:53:29
【问题描述】:
我在一台最新的 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 的方法,它只调用旧的系统调用。还没有运气。
【问题讨论】:
-
获取旧版本的 glibc 并链接到它。新的 glibc 不会在旧内核上运行。
标签: linux gcc kernel version glibc