64 位版本的 GCC 无法编译 64 位 exe
64-bit version of GCC not compiling 64-bit exe
我是 gcc 命令行 编译的初学者。
我需要有关 -m64 标志的帮助。
我使用 MinGW 安装了 gcc 编译器。
我通过以下检查了 gcc 版本,
gcc -v
命令,显示 Target: x86_64-w64-mingw32
。
所以我假设安装了 64 位版本的 gcc。
Objective:我写了一个小程序来检查 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?
正如其他人在评论中所说,long
的大小在 64 位系统上可以是 8 或 4 个字节。您可以尝试 sizeof(size_t)
或 sizeof(void*)
。即使这在每个系统上都可能不可靠(但应该适用于 Windows、Linux、macOS)。
x86_64-w64-mingw32:
mingw32 是将生成 32 位可执行文件的编译器。
包名称中对 64 位的引用表明此编译器以 64 位模式运行。
如果您不想生成 64 位可执行文件,您将需要 mingw64 编译器:
https://www.mingw-w64.org/
这是一个更好的方法。
首先从 Microsoft https://docs.microsoft.com/en-us/sysinternals/downloads/sigcheck 下载 Sigcheck 然后 运行 如下所示:
C:\Sigcheck>sigcheck64.exe -u -e "C:\Sublime C++ Projects\runtime_measure.exe"
Sigcheck v2.82 - File version and signature viewer
Copyright (C) 2004-2021 Mark Russinovich
Sysinternals - www.sysinternals.com
c:\sublime c++ projects\runtime_measure.exe:
Verified: Unsigned
Link date: 7:43 PM 12/8/2021
Publisher: n/a
Company: n/a
Description: n/a
Product: n/a
Prod version: n/a
File version: n/a
MachineType: 64-bit
如您所见,在本例中,runtime_measure.exe 是一个 64 位二进制文件。
不要忘记提供正确的地址,以便终端可以从您放置的目录中找到并执行sigcheck64.exe。
此外,请注意在命令中使用了两个参数 -u
和 -e
。
我是 gcc 命令行 编译的初学者。 我需要有关 -m64 标志的帮助。
我使用 MinGW 安装了 gcc 编译器。
我通过以下检查了 gcc 版本,
gcc -v
命令,显示 Target: x86_64-w64-mingw32
。
所以我假设安装了 64 位版本的 gcc。
Objective:我写了一个小程序来检查 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?
正如其他人在评论中所说,long
的大小在 64 位系统上可以是 8 或 4 个字节。您可以尝试 sizeof(size_t)
或 sizeof(void*)
。即使这在每个系统上都可能不可靠(但应该适用于 Windows、Linux、macOS)。
x86_64-w64-mingw32: mingw32 是将生成 32 位可执行文件的编译器。 包名称中对 64 位的引用表明此编译器以 64 位模式运行。
如果您不想生成 64 位可执行文件,您将需要 mingw64 编译器: https://www.mingw-w64.org/
这是一个更好的方法。
首先从 Microsoft https://docs.microsoft.com/en-us/sysinternals/downloads/sigcheck 下载 Sigcheck 然后 运行 如下所示:
C:\Sigcheck>sigcheck64.exe -u -e "C:\Sublime C++ Projects\runtime_measure.exe"
Sigcheck v2.82 - File version and signature viewer
Copyright (C) 2004-2021 Mark Russinovich
Sysinternals - www.sysinternals.com
c:\sublime c++ projects\runtime_measure.exe:
Verified: Unsigned
Link date: 7:43 PM 12/8/2021
Publisher: n/a
Company: n/a
Description: n/a
Product: n/a
Prod version: n/a
File version: n/a
MachineType: 64-bit
如您所见,在本例中,runtime_measure.exe 是一个 64 位二进制文件。
不要忘记提供正确的地址,以便终端可以从您放置的目录中找到并执行sigcheck64.exe。
此外,请注意在命令中使用了两个参数 -u
和 -e
。