Linux 中对应的库是什么,就像 Visual Studio 中的 /MTd 一样?
What's the corresponding library in Linux as /MTd in Visual Studio?
问题如下:
我在Windows上写了一段代码。使用/MT
选项时,答案是错误的。当简单地切换到/MTd
时,答案是正确的
现在我正在移植将这些代码移植到Linux。使用以下命令的答案是错误的:g++ -Ofast -o test test.cpp
。此外,我确信这是唯一剩下的问题
我已经安装了libc6
、libc6-dbg
、libc6-dev
、libstdc++-4.8-dev
、libstdc++6
和libstdc++6-4.8-dbg
这种情况下有什么问题?我该如何解决?
更新:问题已解决。代码可以通过各种优化选项在Windows(调试和发布模式)和Linux上正确运行。存在变量初始化问题。谢谢大家。
您需要修复您的代码。程序在C++运行库的调试和发布版本中表现不同(这是由/MT和/MTd控制的)意味着您的程序中存在错误。很可能是未定义的行为。
第一件事是将编译命令更改为g++ -O3 -Werror -Wall -Wextra -pedantic -o test test.cpp
并研究编译器输出。如果你幸运的话,你会看到一些警告变成错误。
您有两个问题。
-
您的g++编译命令是发布模式。使用
-g
选项可以使用调试符号进行编译。 -
您需要在Windows上解决为什么在
/MT
的发布模式下无法获得正确的信息。
相关文章:
- Visual Studio中的函数声明和函数定义问题
- 第三方 API 中的编译错误 - Visual Studio
- Visual Studio 中的 CMake 项目:如何添加其他包含和库目录?
- Visual Studio 2017 中的 QtMetaObject 未解决的外部错误
- Visual Studio 中的 sqrtf 函数替代
- 智能感知不适用于Visual Studio 2017中的cmake项目
- C2011 'CMemDC':Visual Studio 2019中的'class'类型重新定义
- Visual Studio中的wxwidgets应用程序给出错误"LNK2019 unresolved external symbol"
- Visual Studio 中的数组
- 使用 NuGet 填充 Visual Studio 2019 中的 CMake 依赖项
- Visual Studio 中的警告 C6385
- Visual Studio 2017 中的 cpprestapi 问题找不到 POST/GET 常量
- 无法从 Visual Studio C++ 中的另一个类访问一个类
- 如何查找 winsock.h 在 Visual Studio 中的包含位置
- 在 Visual Studio 中的 1 个项目中编译单个 C++ 源文件
- 如何解决Visual Studio C++ 'xmemory'文件中的错误?
- 如何在不进入 Visual Studio 2015 中的外部库的情况下单步执行我的代码 (F11)
- C++17 标准库包括不适用于 Visual Studio 2017 中的 Android 项目
- 链接Visual Studio代码中的GLFW
- 使用 Visual Studio 代码读取 C++ 中的输入流时出错