在编译静态库时设置较早的最小内核版本

时间:2010-12-22 06:15:16

标签: gcc glibc static-linking binutils gnu-toolchain

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

2 个答案:

答案 0 :(得分:1)

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

为了保证二进制文件在旧系统上运行,请编译与旧glibc的链接。最简单的方法是找到一个较旧的发行版,但我建议设置一个“crosstool”或类似的交叉编译工具链,其目标是与构建系统使用的不同的libc(这样可以实现可重复的构建)跨越主机,无论系统是什么)。

答案 1 :(得分:0)

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