libstdc++ 静态链接和 System V ABI

Posted

技术标签:

【中文标题】libstdc++ 静态链接和 System V ABI【英文标题】:libstdc++ static linking & System V ABI 【发布时间】:2017-07-14 04:54:30 【问题描述】:

当我使用-static-libstdc++ 编译时,编译后的二进制文件使用UNIX - GNU ABI,但我需要使用UNIX - System V ABI 获取二进制文件。 (我需要与 FreeBSD 兼容) 我也试过Compile libstdc++ with hash style SYSV,但没有用。

$ gcc-7.1 -v
Using built-in specs.
COLLECT_GCC=gcc-7.1
COLLECT_LTO_WRAPPER=/usr/local/gcc-7.1/libexec/gcc/x86_64-linux-gnu/7.1.0/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../gcc-7.1.0/configure -v --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --prefix=/usr/local/gcc-7.1 --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib --program-suffix=-7.1 : (reconfigured) ../gcc-7.1.0/configure -v --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --prefix=/usr/local/gcc-7.1 --enable-checking=release --enable-languages=c,c++,fortran --program-suffix=-7.1 : (reconfigured) ../gcc-7.1.0/configure -v --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --prefix=/usr/local/gcc-7.1 --enable-checking=release --enable-languages=c,c++,fortran --program-suffix=-7.1 --disable-gnu-unique-object
Thread model: posix
gcc version 7.1.0 (GCC)

【问题讨论】:

【参考方案1】:

所以,当我完全重新编译 gcc 而不是重新配置时,问题就解决了。

【讨论】:

以上是关于libstdc++ 静态链接和 System V ABI的主要内容,如果未能解决你的问题,请参考以下文章

如何静态链接到 libstdc++.喜欢升级的GCC的朋友快来看看

g++ 尝试(失败)静态链接到 libstdc++ 以获取共享对象

gcc:查找 libstdc++ 的目录

linux libstdc++.a和libstdc++.so功能一样吗

iOS导入c++语言的静态库之后编译不过,先要检查是否导入了libstdc++

为什么我不能摆脱libstdc ++?