【发布时间】:2016-03-31 13:19:12
【问题描述】:
问题来了:
我在 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 上正确运行。存在变量初始化问题。谢谢大家。
【问题讨论】:
-
这是我第一次看到
porting被称为transplanting。让我吃惊的好工作:) -
如果要构建程序的调试版本,请在使用
gcc或g++构建时添加-g标志。就是这样。 -
@JoachimPileborg,然而,这不是问题的本质。
-
那是因为您遇到的问题出在代码中,与标志无关。拥有调试信息(当您使用
-g标志时生成)将帮助您调试应用程序,方法是使用调试器并单步执行代码,或者使用诸如Valgrind 之类的工具来查找程序中的内存覆盖.除了这么说,没有任何代码我们也无能为力,最好是Minimal, Complete, and Verifiable Example。
标签: c++ linux compilation runtime