Linux 中对应的库是什么,就像 Visual Studio 中的 /MTd 一样?

What's the corresponding library in Linux as /MTd in Visual Studio?

本文关键字:中的 Studio Visual MTd 一样 就像 是什么 Linux      更新时间:2023-10-16

问题如下:
我在Windows上写了一段代码。使用/MT选项时,答案是错误的。当简单地切换到/MTd时,答案是正确的
现在我正在移植将这些代码移植到Linux。使用以下命令的答案是错误的:g++ -Ofast -o test test.cpp。此外,我确信这是唯一剩下的问题
我已经安装了libc6libc6-dbglibc6-devlibstdc++-4.8-devlibstdc++6libstdc++6-4.8-dbg
这种情况下有什么问题?我该如何解决?

更新:问题已解决。代码可以通过各种优化选项在Windows(调试和发布模式)和Linux上正确运行。存在变量初始化问题。谢谢大家。

您需要修复您的代码。程序在C++运行库的调试和发布版本中表现不同(这是由/MT和/MTd控制的)意味着您的程序中存在错误。很可能是未定义的行为。

第一件事是将编译命令更改为g++ -O3 -Werror -Wall -Wextra -pedantic -o test test.cpp并研究编译器输出。如果你幸运的话,你会看到一些警告变成错误。

您有两个问题。

  1. 您的g++编译命令是发布模式。使用-g选项可以使用调试符号进行编译。

  2. 您需要在Windows上解决为什么在/MT的发布模式下无法获得正确的信息。