2

我是新来的。这是我的问题:

我在装有 Intel Atom CPU N550、1.50GHz 和 2GB RAM 的 Windows 7 Home Premium 32 位上网本上安装了 MinGW。

现在我创建了一个名为 hello.h 的文件,并尝试通过 CMD 使用以下命令对其进行编译:“gcc c:\workspace\c\helloworld\hello.h -o out.exe”

它编译没有错误,但是当我尝试运行 out.exe 时,它​​给了我以下错误: “程序太大而无法放入内存”

我检查过的事情:

  • 我已将“C:\MinGW\bin”添加到 Windows PATH 变量中
  • 我已经用谷歌搜索了大约一个小时,但是自从我是新手以来,我真的无法弄清楚问题出在哪里。
  • 我在我的 64 位机器上编译了相同的代码,编译完美,但由于 64 位 <-> 16 位问题而无法运行。

如果有人能弄清楚问题是什么,我真的很感激。顺便说一句,这是我的 hello.h:

#include <stdio.h>

int main(void){
    printf("Hello, World\n");
}

... 而已。感谢您的回复。干杯,鲍里斯

4

3 回答 3

3

只需将您的文件重命名为 hello.c

.h 文件是 C 编程中的标头,您应该在其中放入一些诸如签名之类的内容,并且方法的主体应该在 .c 文件中

于 2012-09-23T12:38:48.927 回答
2

默认情况下,带有扩展名的文件被 GCC.h视为头文件。通常,头文件不应该直接提供给编译器。它们应该被#include放入实现文件中。

然而,当 GCC 看到一个头文件被直接提供给它时​​,它实现了一个特殊的功能。在命令行中指定文件会使 GCC 将其解释为为该文件.h生成预编译头文件.h的请求。通过使用一个-o选项,您强制编译器为生成的预编译头文件指定一个特定名称out.exe

然而,生成的文件不是可执行文件,它是预编译的头文件。您可以在十六进制编辑器中打开它并看到它以 开头gpch,这是 GCC 的预编译器标头签名。任何“执行”该文件的尝试都将导致毫无意义的结果。(这基本上就像尝试将一个完全随机的文件重命名为.exe扩展名,然后“运行”它。)

于 2014-05-12T01:11:18.683 回答
0

为了解决这个问题,您必须将C:\TDM-GCC-32\bin添加到%PATH%变量中。
对我来说它在 E: 所以它将是:E:\TDM-GCC-32\bin

步骤:
1. 复制 TDM-GCC\bin 文件夹的路径
在此处输入图像描述

2.打开电脑属性
在此处输入图像描述

3. 导航到高级

4.点击环境变量按钮
在此处输入图像描述

5. 选择变量 PATH 并点击 Edit 按钮
在此处输入图像描述

6. 在末尾附加复制的 TDM-GCC 路径。不要忘记分号。
在此处输入图像描述


完成所有这些步骤后,点击 Ok、Ok、Apply、Ok。你准备好了!

这是命令提示符中的结果:
在此处输入图像描述

于 2018-10-06T16:43:22.647 回答