gpt4 book ai didi

gcc - 强制 G++ (GCC) 到特定的 libstdc++ 版本 (GLIBCXX_*)

转载 作者:行者123 更新时间:2023-12-04 12:47:39 26 4
gpt4 key购买 nike

我正在尝试使用 GCC 4.9.0 构建一个二进制文件,该二进制文件向后兼容 libstdc++ .根据 GCC 的 ABI Policy and GuidelinesOptions Controlling C++ Dialect , 命令行选项 -fabi-version应该做的伎俩;但是,无论我设置了哪个版本,我仍然可以从所需的更新版本中导入符号,如下所示:

$ objdump -T binary | grep GLIBCXX_3.4.20
00000000 DF *UND* 00000000 GLIBCXX_3.4.20 _ZSt24__throw_out_of_range_fmtPKcz

我试过 -fabi-version=1-fabi-version=5 (ABI 版本 5 对应于 GCC 4.6,它保证存在于目标系统上),但这些导入在生成的文件中不断结束。

我该如何解决?由于其他原因,我不能选择回到旧的 GCC 版本。

最佳答案

the command line option -fabi-version should do the trick



不,这与您想要的完全无关。该选项会影响编译器生成的代码,这并不意味着您可以链接到旧版本的 libstdc++(这是根据新 libstdc++ 中的符号停止所需的)。

您不能使用新的 GCC 链接到旧的 libstdc++。 libstdc++ 的版本与 GCC 的版本紧密耦合,因此如果您想链接到较旧的 libstdc++,则需要使用较旧的 GCC 进行编译。

你不能告诉 libstdc++ 不使用新符号,它依赖它们的原因是因为它需要它们。使用较旧的 libstdc++。

Going back to an old GCC version is not an option to me for other reasons.



那你就完蛋了。

您要么需要使用较旧的 GCC,要么不动态链接到 libstdc++.so .

在 Red Hat Enterprise Linux 或 CentOS 上,您可以选择使用 Developer Toolset 中较新的 GCC,以避免链接到新的 libstdc++.so但这仅与系统 GCC 兼容,即 RHEL6 的 GCC 4.4 或 RHEL7 的 GCC 4.7。您不能使用它与 GCC 4.6 兼容。

关于gcc - 强制 G++ (GCC) 到特定的 libstdc++ 版本 (GLIBCXX_*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24454930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com