Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Linux上的机器翻译和机器翻译_C++_Linux_Linker_Libc_Crt - Fatal编程技术网

C++ Linux上的机器翻译和机器翻译

C++ Linux上的机器翻译和机器翻译,c++,linux,linker,libc,crt,C++,Linux,Linker,Libc,Crt,我很好奇为什么在Windows上有这么多关于MT和MD的内容,而没有人谈论linux。在linux中,afaik有libc.so作为MD等价物,libc.a作为MT等价物 由于可以静态或动态链接c运行时,并且在构建单个可执行文件时可以将静态和动态LIB链接在一起,因此您必须遇到与在windows上组合MT和MD库或多个版本的c运行时相同的问题 那么我的问题是,linux上是否存在相同的问题,或者linux上是否存在某种系统/模式来防止这些问题?在我看来,这些问题与windows上的问题是一样的,

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

由于可以静态或动态链接c运行时,并且在构建单个可执行文件时可以将静态和动态LIB链接在一起,因此您必须遇到与在windows上组合MT和MD库或多个版本的c运行时相同的问题


那么我的问题是,linux上是否存在相同的问题,或者linux上是否存在某种系统/模式来防止这些问题?在我看来,这些问题与windows上的问题是一样的,只是奇怪,我找不到关于这些问题的更多信息。

/MT
/MD
不是真正的windows,而是Visual Studio。虽然两者都来自微软,但有一个非常重要的区别。这两个产品的分离程度远远超过Linux上的典型情况

特别是,在Linux上,
libc
是操作系统的一部分,还是C编译器的一部分,一直都不清楚。这其实并不重要,尽管C语言的发展速度并没有那么快。 Linux上真正的问题是
libstdc++
,它依赖于
libc
,因此被拖进了相同的依赖性问题中


结果是Visual Studio 2019可以为Windows XP编译C++20代码,使用
/MT
它就可以正常工作。但是在Debian 10上编译时,您将获得对Debian 10 libc的依赖,这在Debian 9上甚至不起作用。

是的,同样的问题也存在,在Linux上静态链接到libc或libstdc++是非常罕见的