3

我的发行版(Arch Linux)最近为其工具链增加了最低支持的 Linux 内核版本。我正在编译一个静态链接然后上传到 Web 服务器的 Web 应用程序,而 Web 服务器上的内核版本对于使用新工具链编译的静态库来说太旧了。(当我尝试在服务器上运行静态二进制文件时出现分段错误。)有没有办法使用 GNU 工具链(GCC、binutils、glibc)编译应用程序,从而忽略需要更新内核版本的功能?

4

2 回答 2

2

Glibc 兼容性实际上只在一个方向上得到保证。(较旧的二进制文件适用于较新的系统;反之亦然,不一定如此。)

为保证您的二进制文件在旧系统上工作,请使用旧 glibc 编译链接。最简单的方法是找到一个较旧的发行版,但我建议设置一个“ crosstool ”或类似的交叉编译工具链,针对不同的 libc,而不是你的构建系统使用的(这允许跨主机重复构建,无论系统是什么)。

于 2010-12-22T07:02:35.960 回答
0

谢谢。我还找到了 glibc 的 --enable-kernel 选项,它可以使用早期的内核。

于 2010-12-28T21:19:33.040 回答