其他分享
首页 > 其他分享> > 使用散列样式SYSV编译libstdc

使用散列样式SYSV编译libstdc

作者:互联网

有没有办法用散列样式SYSV而不是GNU / Linux编译GCC的libstdc?我有一个工具链(通过crosstool-ng),我用它来编译我们的公司库,以便与各种各样的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,不知道为什么.

提前致谢!

解决方法:

尝试使用–disable-gnu-unique-object配置选项重建GCC.根据GCC配置选项的文档:

–enable-gnu-unique-object

–disable-gnu-unique-object

Tells GCC to use the gnu_unique_object relocation for C++ template static data members and inline function local statics. Enabled by default for a toolchain with an assembler that accepts it and GLIBC 2.11 or above, otherwise disabled.

使用gnu_unique_object可能会在最终的可执行文件中导致GNU ABI,旧的Red Hat不支持.

标签:c-2,linux,gcc,sysv
来源: https://codeday.me/bug/20190623/1267832.html