【发布时间】:2023-04-08 20:42:01
【问题描述】:
作为 Linux 发行版的下游维护者,我通常维护的一些包开始在其代码库中使用 C++11 功能。它们都依赖于 Linux 发行版打包的不同库。
Problems with the ABI 可能在将 C++11 代码与 C++98 和 AFAIK 混合时出现,当前大多数主要 Linux 发行版在编译软件生成包时默认不启用 C++11 标志。
问题是:主要的 Linux 发行版是如何处理 C++11 代码的输入的?在使用系统库时,是否有适当的方法来检查或避免 ABI 的这些问题?
谢谢。
【问题讨论】:
-
您能否提供有关“当前大多数主要 Linux 发行版都未启用 C++11 标志”的参考?
-
你在混合 g++ 版本吗?如果不是,我相信这个问题在 GCC 4.8 中已修复
-
@Mgetz 4.8.1 仍然至少提到了一个问题,而 4.8.2 提到了一些非常小的问题。
-
@Puppy 你看到 Yakk 提到的例子了吗?也许您应该要求它,而不是因为“没有必要”而称其为 BS。没有什么是必要的。然而它被允许发生。 (在实践层面上存在现实。无论标准是否愿意)
-
假设只有那个“意外”。由于没有管理 ABI 和 ABI 互操作性的标准,我不确定如何给出权威答案。我很确定它需要的不仅仅是“编译器开发人员永远不会那样做,不是吗?!”
标签: c++ c++11 packaging software-distribution abi