GCC 无法编译 64 位 C 程序

GCC can't compile C program at 64-bit

所以,真正的交易是我在这个网站内外进行了很多研究,但没有这样的问题或解决方案可以帮助我。

我正在学习 C 编码。这没什么大不了的,因为我非常了解 Python 和 C#(Unity)。问题是我正在尝试做我以前在 Python 上做过的应用程序,但我遇到了一个问题:我正在 Debian 8 虚拟机(Oracle 的 Virtual Box)上编译我的程序,如下所示: gcc -lm -m64 -o file.exe file.c。 发生的事情是,当我回到我的 Windows 10 机器(不是虚拟机)时,它 returns 我试图 运行 的程序是一个不受支持的 16 位版本程序,它无法 运行 它。 我真的研究了很多,可以找到一些东西, 我做了......但没有任何改变......所以,我认为在联系 GCC 程序或我的脚本时出错,bhaskara.c(是的,这是一个 bhaskara 公式计算器):

#include <stdio.h>
#include <math.h>

float main(){
    double a, b, c, x1, x2;
    double delta;
    double d, e;
    printf("NOTE: If the numbers are integers, use .0 at the end(eg. 1 = 1.0)\n");

    printf("A = ");
    scanf("%f", &a);
    printf("B = ");
    scanf("%f", &b);
    printf("C = ");
    scanf("%f", &c);

    d = b*b;
    e = (d + 4*a*c);
    delta = sqrt(e);
    printf("Delta = %f\n", delta);

    x1 = (-b + delta)/2;
    printf("X1 = %f\n", x1);
    x2 = (-b - delta)/2;
    printf("X2 = %f\n", x2);
}

代码很丑,其实只是一个测试...

我尝试过的事情: -重新安装 GCC -运行 不同的选项(-m32 和 -m64) - 编译 whith *.exe 并且没有它在使用之前添加它(不知道它是否有意义) - 将浮点数变成双精度数(代码;据我所知,双精度数使用更多字节)

我的问题: 我能做些什么来修复它?我的脚本是否存在错误,导致它无法成为 64 位版本?我使用的是错误版本的 GCC 吗? (4.9.2;这就是我所知道的一切......)是否有任何其他选项可用于选择处理器类型?并使其适用于各种处理器? 在此先感谢,如果有人能回答我问题是什么,我将不胜感激,我真的是编译新手...如果我的问题难以理解,请在下面留下评论,以便我进行编辑。

绝对没有理由期望 GCC 的 Debian 安装默认构建 Windows 可执行文件。如果你 运行 file 在输出上,你可能会看到这样的东西:

ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux)

您需要这样的可执行文件:

PE32+ executable (GUI) x86-64, for MS Windows

这是两种完全不同的文件格式。 Windows 不会 运行 Linux 可执行文件(除了使用某种模拟器)并且 Linux 不会 运行 Windows 可执行文件(除了使用某种模拟器)模拟器)。您可以使用交叉编译器在 Windows 上构建 Linux 应用程序或在 Linux.

上构建 Windows 应用程序