我问这个问题的具体原因是因为我正在尝试生成一个 C/C++ 工具链,它可以构建 C++17 代码并生成可以在尽可能多的客户端系统上运行的二进制文件。我至少需要 gcc 9 才能获得(稳定的)C++17 支持。但这意味着客户端系统至少需要 libstdc++.so.6.0.26 (GLIBCXX_3.4.26)。这也意味着我无法在不失去与多个客户端系统的兼容性的情况下使用较新的编译器,因为 libstdc++ 与 gcc 耦合。
GNU libc 未与 gcc 耦合。我可以选择最新的编译器,并仍然使用旧的 glibc 2.28 来构建 C11 代码。
为什么 GNU libstdc++ 与 gcc 耦合,而 GNU libc 不耦合?
libstdc++
也不是真正与 GCC 耦合——您可以使用 g++
来使用 C++
来构建 libc++
代码。
默认情况下
g++
使用libstdc++
,因为它们都来自同一个项目,而GLIBC是一个单独的项目。