Linux 上的 MT 和 MD

MT and MD on Linux

我很好奇为什么 Windows 上有这么多关于 MT 和 MD 的内容,而没有人谈论 linux。在 linux 中,afaik 有 libc.so 作为 MD 等价物,libc.a 作为 MT 等价物。

由于可以静态或动态地 link c 运行时,并且您可以 link 在构建单个可执行文件时同时使用静态库和动态库,因此您必须遇到相同的问题与结合 MT 和 MD 库,或 windows.

上的多个版本的 c 运行时一样

所以我的问题是,linux 上是否存在相同的问题,或者 linux 上是否存在一些 system/pattern 可以防止这些问题?在我看来,这些问题与 windows 上的问题相同,很奇怪我找不到太多关于这些问题的信息。

/MT/MD并不是真正的Windows,而是Visual Studio。虽然两者都来自 Microsoft,但有一个非常重要的区别。与 Linux.

上的典型情况相比,这两种产品的分离程度要高得多

特别是在 Linux 上,一直不清楚 libc 是 OS 的一部分还是 C 编译器的一部分。这并不重要,尽管 C 并没有那么快地发展。 Linux 上的真正问题是 libstdc++,它依赖于 libc,因此被拖入相同的依赖问题。

结果是 Visual Studio 2019 可以为 Windows XP 编译 C++20 代码,而 /MT 就可以了。但是在 Debian 10 上编译,你会得到对 Debian 10 libc 的依赖,它甚至不能在 Debian 9 上工作。