简单的程序崩溃

2024-04-24

所以我已经使用 MinGW GCC 版本 4.4 有一段时间了,并决定是时候升级了。我去MinGW网站下载了最新版本的GCC(4.7.0)。

删除以前的版本并安装最新版本后,即使是最简单的程序也会崩溃。例如,如果我编译这个程序

#include <iostream>

using namespace std;

int main () {
    cout << "Hello, World" << endl;

    return 0;
}

使用命令行

g++ hello.cpp -o hello.exe

它将打印出“Hello, World”,然后崩溃。但是,如果我使用以下命令行编译它:

g++ -O3 hello.cpp -o hello.exe

它将运行得很好,根本不会崩溃。

现在,如果我更改输入程序,并使其稍微复杂一些:

#include <iostream>
#include <string>

using namespace std;

int main () {
    string str;

    cout << "Enter a string: ";
    getline (cin, str);

    if (str == "foo")
        cout << "You entered foo!" << endl;
    else
        cout << "You entered: " << str;

    return 0;
}

如果没有优化选项(-O3),它会在打印出“输入字符串:”之前崩溃,但是,使用代码优化行,它会在输入字符串后崩溃。

现在,终于回答我的问题了。我能做些什么来解决这个问题,我是否只需恢复到以前版本的 GCC 才能使用它?另外,为什么 GCC 不能正确编译一个简单的程序?


Update:该错误是由 GCC 安装引起的,当使用 MinGW 安装程序进行安装并选择“下载最新存储库目录”选项时,会重现该错误。但是,如果我使用相同的安装程序并选择“使用预打包的存储库目录”,则错误不再存在。因此 MinGW GCC 目录中列出的最新版本的二进制文件存在一些错误。


我遇到过非常类似的问题,发布版本很好,而调试版本则被破坏。解决方案是执行以下操作:

mingw-get update
mingw-get upgrade
mingw-get install gcc g++ mingw32-make --reinstall

这可能是双杀,但至少当“升级”无法删除一些以前的库时它甚至有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单的程序崩溃 的相关文章

随机推荐