【发布时间】:2022-01-13 12:57:54
【问题描述】:
我是 gcc 命令行 编译的初学者。 我需要关于 -m64 标志的帮助。
我使用 MinGW 安装了 gcc 编译器。
我通过以下方式检查了 gcc 版本,
gcc -v 命令,显示Target: x86_64-w64-mingw32。
所以我假设安装了 64 位版本的 gcc。
目的:我写了一个小程序来检查main.exe是为32位还是64位生成的。
#include<stdio.h>
int main(void)
{
printf("The Size is: %lu\n", sizeof(long));
return 0;
}
我使用以下命令编译,gcc -o main main.c。当我执行 main.exe 时,它会输出 The Size is: 4。
但我希望输出是 `The Size is: 8'。
所以我将命令修改为gcc -m64 -o main main.c。当我再次执行 main.exe 时,它仍然输出 `The Size is: 4'
64位版本的exe如何编译?
【问题讨论】:
-
printf("The Size is: %lu\n", sizeof(long));->printf("The Size is: %zu\n", sizeof(void*)); -
A
long保证至少 32位。如果您想知道您编译的二进制文件是否为 64 位,请检查指针的大小,因为这就是 N 位存在的全部原因。 en.cppreference.com/w/cpp/language/types -
在 Windows 上,
long始终是 32 位的,你应该试试sizeof(void*)。 -
windows 和 linux 都有办法检查可执行文件是 32 位还是 64 位。改用该方法,不能保证查看类型的大小。
-
@Jabberwocky,瑞典人,ssbssa。谢谢,现在很清楚了。程序运行成功。