在 GNU ABI 下为 System V ABI 构建共享 libc.so

Building shared libc.so for System V ABI under GNU ABI

我需要从源代码为 GNU ABI 系统下的 System V ABI 系统构建共享 libc.so。如果它很重要,我正在尝试构建 glibc2.16。

我的 gcc 编译器是在默认 --hash-style 选项设置为 "sysv" 的情况下构建的。每个用它构建的应用程序都有 System V ABI。每个,但不是 libc.

尝试添加 C*FLAGS -Wl,--hash-style=sysv,但没有成功。配置已完成,但因错误而停止:

glibc cannot be compiled without optimization

我发现是因为gcc options order。所以,我决定自己设置必要的选项。在 Makeconfig 和 configure.in 中找到 --hash-style=both。将其更改为 sysv。所有库(ld.so 和其他库)最终都适用于 System V。除了 libc.so.

你知道如何构建 libc.so 吗?谢谢!

在配置选项的不同组合之后,我得到了答案。 正确的配置命令:

对于 x32 系统:

../configure --prefix=... --enable-kernel=2.4.0 --with-cpu=i686 --build=i686-unknown-linux-gnu CC="gcc -i686" CXX="g++ -i686"

对于 x64 系统:

../configure --prefix=... --enable-kernel=2.4.0 --with-cpu=i686 --build=i686-unknown-linux-gnu CC="gcc -m32" CXX="g++ -m32"

并且您需要使用下一个值导出 CFLAGS:

export CFLAGS="-mtune=native -O2 -pipe"