有没有办法用 SYSV 哈希样式而非 GNU/Linux 编译 GCC 的 libstdc++?我有一个工具链(通过 crosstool-ng),用于编译我们公司的库以适应各种 Linux 系统。
其中一个系统是一个非常古老的 RedHat,仅有 SYSV 哈希样式,当我使用工具链编译仅包含 C 代码的库/程序时,它能正常工作,因为生成的二进制文件使用的是 SYSV 样式。
但是,当我连接 libstdc++ 时,二进制文件自动变成了 GNU/Linux 样式。原因是 libstdc++ 是作为 GNU/Linux 构建的,因此提出此问题。
在该系统上运行二进制文件会导致错误。
其中一个系统是一个非常古老的 RedHat,仅有 SYSV 哈希样式,当我使用工具链编译仅包含 C 代码的库/程序时,它能正常工作,因为生成的二进制文件使用的是 SYSV 样式。
但是,当我连接 libstdc++ 时,二进制文件自动变成了 GNU/Linux 样式。原因是 libstdc++ 是作为 GNU/Linux 构建的,因此提出此问题。
在该系统上运行二进制文件会导致错误。
ELF file OS ABI invalid
仅为完整性起见,我已经尝试使用-Wl,--hash-style = sysv,但没有成功。
此外,我有另一个针对ARM系统的工具链,其中GCC、GLIBC等版本相同,但在该工具链中libstdc++使用SYSV,不知道为什么。
提前致谢!