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