使用散列样式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