64位编译c语言程序吗,GCC无法在64位编译C程序

因此,真正的交易是,我在该网站的内部和外部进行了大量研究,没有找到可以帮助我的问题或解决方案。

我正在学习C编码。这不是什么大问题,因为我对Python和C#(Unity)非常了解。事实是,我正在尝试使用Python做以前的应用程序,但是我遇到了一个问题:我正在Debian 8虚拟机(Oracle的Virtual Box)上编译程序,如下所示:gcc -lm -m64 -o file.exe file.c。

发生的情况是,当我返回Windows 10计算机(非虚拟)时,它返回我正在尝试运行的程序是该程序的不受支持的16位版本,并且无法运行它。

我真的做了很多研究,可以找到一些东西,我做了……但是没有任何变化……所以,我认为在联系GCC程序或我的脚本bhaskara.c时出现错误(是的, bhaskara公式计算器):

#include

#include

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)\");

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\", delta);

x1 = (-b + delta)/2;

printf("X1 = %f\", x1);

x2 = (-b - delta)/2;

printf("X2 = %f\", x2);

}

代码很丑陋,实际上,这只是一个测试...

我尝试过的事情:

-重新安装GCC

-运行不同的选项(-m32和-m64)

-编译* .exe,并且没有在使用前添加它(不知道它是否有意义)

-将浮点数转换为双精度(代码;直到我知道,双精度使用更多字节)

我的问题:

我该如何解决?我的脚本是否有错误,使其无法为64位?我使用的是错误版本的GCC吗? (4.9.2;这就是我所知道的全部...)我还有其他选择可以用来选择处理器类型吗?并使其适用于各种处理器吗?

在此先感谢您,如果有人可以回答我有什么问题,我真的很感谢。我真的是新手。如果我的问题很难理解,请将注释保留在下面,以便我进行编辑。

这就是您的Python和C#经验使您误入歧途的地方。

您为什么认为这应该正确工作? 为什么默认情况下,Debians GCC会以Windows格式生成可执行文件?

Debian是Linux发行版。 为该平台编译的可执行文件不会在任何Windows中运行。

您需要mingw,而不是virtual box+debian+gcc ....

您忘记在Windows机器上安装Linux VM

这个(实际上不是一个)问题的标题非常容易引起误解。 您的编译器正在编译代码。 您只是没有针对正确的平台。

绝对没有理由期望Debian安装的GCC默认情况下会生成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应用程序。

有关交叉编译的一些信息(可能需要更新64位):stackoverflow.com/a/182456/10077

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值