2016-08-24 42 views
4

有什么办法来编译GCC的的libstdC++与哈希SYSV风格,而不是GNU/Linux呢?我有一个工具链(通过crosstool-ng),用于编译我们的公司库,以处理各种各样的Linux系统。编译的libstdC++与哈希风格SYSV

其中一个系统是一个非常古老的RedHat,它只有SYSV哈希样式,当我用工具链编译一个C语言库/程序时,它工作得很好,因为生成的二进制文件使用SYSV。

但是,当我的libstdC++链接,二进制自动切换到GNU/Linux的风格,其原因就是因为++的libstdc建为GNU/Linux的,因此这个问题。

运行在这个系统中的二进制给我

ELF file OS ABI invalid 

只是为了保持完整性,我已经尝试轮候册,错误 - 哈希风格= SYSV,都没有成功。

此外,我有另一个ARM系统的工具链,它们具有相同版本的GCC,GLIBC等,但在此工具链中,libstdC++使用SYSV,不知道为什么。

在此先感谢!

回答

4

尝试重建您的GCC --disable-gnu-unique-object配置选项。据对GCC配置选项文件:

--enable-GNU的唯一对象

- 禁用GNU的唯一对象

告诉GCC使用gnu_unique_object拆迁C++模板静态数据成员和内联函数本地静态。默认情况下,对于具有接受GLIBC 2.11或更高版本的汇编程序的工具链启用,否则禁用。

使用gnu_unique_object可能会导致您的最终可执行文件中出现GNU ABI,这在旧版Red Hat中不受支持。